WiFi Wart

The WiFi Wart is a wall charger with a monster inside.

Public Chat
Similar projects worth following
A wall charger with a Linux SBC/wifi router inside.

The WiFi Wart is a wall charger housing a 1.2Ghz quad core microprocessor and two WiFi radios. Security professionals and hobbyists can use it to conduct WiFi attacks, such as man in the middle, network deauthing and password sniffing. The design is completely open-source: electrical, mechanical and software. In addition, all the tools used in the design are also open source: KiCad, FreeCAD and Buildroot. There is a custom Linux distribution created from Buildroot that is used to boot the boards, I have successfully booted the boards and configured the wifi radios.

Builds files for Compute board

Build Files for Power Board

Mechanical Files


Blogs Posts


Join our Discord community!

Build files for the FF (form-factor) power compute revision 0.1!

Zip Archive - 2.23 MB - 09/23/2021 at 16:21


Build files for the FF (form-factor) power board revision 0.1!

Zip Archive - 2.17 MB - 09/23/2021 at 16:20


Build files for the NFF (non-form-factor) revision 0.1!

Zip Archive - 18.95 MB - 07/27/2021 at 17:54


  • 1 × AS4C512M16D3L-12BIN 1GB RAM
  • 1 × Allwinner A33 Main Processor. 1.2Ghz quad core Allwinner processor.
  • 2 × rtl8188cus

  • Final Video

    Machinehum (Ryan Walker)11/04/2021 at 18:01 0 comments

    Here is the final video for my project :) It's just a simple overview

  • Final Build Boots

    Machinehum (Ryan Walker)11/03/2021 at 22:11 0 comments

  • Final Build Complete!

    Machinehum (Ryan Walker)10/26/2021 at 00:45 0 comments
  • Printed Mechanical Enclosure

    Machinehum (Ryan Walker)10/18/2021 at 17:07 0 comments

    I've dusted off the old 3D printer and printed the mechanical enclosure, so amazing seeing it come to life! I'm hoping to get a full build finished this week! Stay tuned. PS Blog post 3 is up.

  • Form Factor Boards Arrive!

    Machinehum (Ryan Walker)09/23/2021 at 16:32 0 comments

    The boards have arrived! And with that another blog post is live! Link to newest blog post here.

  • Mains Blade Interface

    Machinehum (Ryan Walker)07/27/2021 at 17:43 0 comments

    I've been scouring the internet trying to find an off-the-shelf part like this...

    The part circled above it is a through-hole stamped part that makes contact with the blade connector, it's the power entry connector for the board. It's an extremely low-cost connector that has to be done right. If the component is to fail it could short against other components causing a fire. The component that actually plugs into the wall is custom as well and is "insert moulded" directly into the case itself. As I couldn't find any existing component I would have to draw one up myself, being new to FreeCAD and mechanical engineering I knew this one would be a challenge. Poking around enough, I found the Sheet Metal Toolbox to be the tool. This toolbox is for sheet metal, you lay out a flat design and add bends where you please. As a starting point, I desoldered a contact from the board above and flattened it out...

    Then sketched it flat...

    To make bends you sketch a line, then click the line and face. You define a bend angle and bend radius.

    I then integrated it into the board file in Kicad exported a step file and reimported it into the FreeCAD assembly, there is still some alignment to be done but it's good enough for now.

    Until next time ;) !

  • [ 1.042110] Waiting for root device /dev/mmcblk0p1...

    Machinehum (Ryan Walker)07/01/2021 at 17:30 0 comments

    Buildroot is a cruel mistress... I've started building the image from the A33-OLinuXino. I used the open source files from this as a reference design for the wifi wart; I thought it would be a breeze. It turns out the PMIC used by Olinux has all the bells and whistles, I2C for control which u-boot (system bootloader) needs to configure voltages and whatnot. After ripping all that code out, I got to a point where the bootloader jamming the kernel into RAM and changing the program counter to the start address. However, I'm getting stuck on some mmc stuff...

    U-Boot SPL 2021.01 (Jun 30 2021 - 12:27:42 -0700)
    DRAM: 1024 MiB
    Trying to boot from MMC1
    U-Boot 2021.01 (Jun 30 2021 - 12:27:42 -0700) Allwinner Technology
    CPU:   Allwinner A33 (SUN8I 1667)
    Model: Olimex A33-OLinuXino
    DRAM:  1 GiB
    MMC:   mmc@1c0f000: 0
    Loading Environment from FAT... Unable to use mmc 0:1... Setting up a 800x480 lcd console (overscan 0x0)
    In:    serial
    Out:   vga
    Err:   vga
    Net:   No ethernet found.
    starting USB...
    Bus usb@1c19000: No host cable detected: Port not available.
    Hit any key to stop autoboot:  2  1  0 
    switch to partitions #0, OK
    mmc0 is current device
    Scanning mmc 0:1...
    Found U-Boot script /boot/boot.scr
    294 bytes read in 2 ms (143.6 KiB/s)
    ## Executing script at 43100000
    21702 bytes read in 3 ms (6.9 MiB/s)
    4058272 bytes read in 187 ms (20.7 MiB/s)
    ## Flattened Device Tree blob at 49000000
       Booting using the fdt blob at 0x49000000
       Using Device Tree in place at 49000000, end 490084c5
    Starting kernel ...
    [    0.000000] Booting Linux on physical CPU 0x0
    [    0.000000] Linux version 5.0.0 (machinehum@whitebox) (gcc version 10.3.0 (Buildroot 2021.05-280-g6dd9e246a7)) #1 SMP Wed Jun 30 11:51:11 PDT 2021
    [    0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d
    [    0.000000] CPU: div instructions available: patching division code
    [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
    [    0.000000] OF: fdt: Machine model: Olimex A33-OLinuXino
    [    0.000000] Memory policy: Data cache writealloc
    [    0.000000] cma: Reserved 16 MiB at 0x7dc00000
    [    0.000000] psci: probing for conduit method from DT.
    [    0.000000] psci: Using PSCI v0.1 Function IDs from DT
    [    0.000000] random: get_random_bytes called from start_kernel+0x98/0x3fc with crng_init=0
    [    0.000000] percpu: Embedded 16 pages/cpu @(ptrval) s34572 r8192 d22772 u65536
    [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 260233
    [    0.000000] Kernel command line: console=ttyS0,115200 root=/dev/mmcblk0p1 rootwait panic=10
    [    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
    [    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
    [    0.000000] Memory: 1011440K/1047076K available (6144K kernel code, 436K rwdata, 1516K rodata, 1024K init, 242K bss, 19252K reserved, 16384K cma-reserved, 244248K highmem)
    [    0.000000] Virtual kernel memory layout:
    [    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    [    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
    [    0.000000]     vmalloc : 0xf0800000 - 0xff800000   ( 240 MB)
    [    0.000000]     lowmem  : 0xc0000000 - 0xf0000000   ( 768 MB)
    [    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
    [    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
    [    0.000000]       .text : 0x(ptrval) - 0x(ptrval)   (7136 kB)
    [    0.000000]       .init : 0x(ptrval) - 0x(ptrval)   (1024 kB)
    [    0.000000]       .data : 0x(ptrval) - 0x(ptrval)   ( 437 kB)
    [    0.000000]        .bss : 0x(ptrval) - 0x(ptrval)   ( 243 kB)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
    [    0.000000] rcu: Hierarchical RCU implementation.
    [    0.000000] rcu: 	RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=4.
    [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
    [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
    [    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
    [    0.000000] GIC: Using split EOI/Deactivate mode
    [    0.000000] arch_timer: cp15 timer(s) running at 24.00MHz (phys).
    [ 0.000000] clocksource: arch_sys_counter:...
    Read more »

View all 7 project logs

Enjoy this project?


Discussions wrote 11/06/2021 at 11:03 point

Very impressive. I presume the slot below the mains pins is for SD card access so it's out of site when plugged in.  How about something similar for the consol serial?  E.g. Looks like you're only using 2 screws for the case, so design a case which looks like it has 4 screws, but one is a 2.5 or 3.5mm stereo socket for fairly common serial adaptor cable.  A lot of wall-warts have bungs to hide the screws & it would be unseen when plugged in anyway.  Would need to power it with crock-clips while testing though.  Or cover the serial port with a "QC" sticker.

  Are you sure? yes | no

Tom Nardi wrote 10/19/2021 at 03:46 point

Love the 3D printed case, it's certainly starting to look like a real USB charger.

  Are you sure? yes | no

Machinehum (Ryan Walker) wrote 10/19/2021 at 03:58 point

Thanks Tom PCB build this week!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates