make menuconfig
U-Boot SPL 2019.04 (Jun 23 2021 - 15:19:43 -0700)
DRAM: 1024 MiB
Failed to set core voltage! Can't set CPU frequency
Trying to boot from MMC1
MMC: no card present
spl: mmc init failed with error: -123
SPL: failed to boot from all boot devices
### ERROR ### Please RESET the board ###
U-Boot SPL 2019.04 (Jun 23 2021 - 15:19:43 -0700)
DRAM: 1024 MiB
Failed to set core voltage! Can't set CPU frequency
Trying to boot from MMC1
U-Boot 2019.04 (Jun 23 2021 - 15:19:43 -0700) Allwinner TechnologyCPU: Allwinner A33 (SUN8I 1667)
Model: Olimex A33-OLinuXino
DRAM: 1 GiB
initcall sequence 7efcf0f4 failed at call 4a002459 (err=-5)
### ERROR ### Please RESET the board ###

The System Boots!

Deadbugging modules to the end of stripped USB connectors
# ls /lib/modules/5.0.0/extra/
8188eu.ko
# modprobe 8188eu.ko
[ 86.120509] 8188eu: loading out-of-tree module taints kernel.
[ 86.201962] RTW: rtl8188eu v5.2.2.4_25483.20171222
[ 86.239880] RTW: hal_com_config_channel_plan chplan:0x08
[ 86.246164] RTW: rtw_regsty_chk_target_tx_power_valid
[ 86.278995] RTW: hal_com_config_channel_plan
[ 86.295988] usbcore: registered new interface driver rtl8188eu
# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc
link/ether 28:f3:66:44:b1:b1 brd ff:ff:ff:ff:ff:ff
3: wlan1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc
link/ether 28:f3:66:44:a9:f9 brd ff:ff:ff:ff:ff:ff
iwlist wlan0 scan | grep ESSID # Scan for SSID's
wpa_passphrase <My SSID> <MY PW> | tee /etc/wpa_supplicant.conf
wpa_supplicant -c /etc/wpa_supplicant.conf -i wlan0

Secure Shell

It’s time to ditch the USB to serial converter and go for something a little fancier: ssh. Secure Shell is a way to remote into a Unix machine over the internet and has several advantages, such as multiple sessions and file transfer. To do this, I added openSSH into the build using Buildroot and booted it up; openSSH has a config file here /etc/ssh/sshd_config inside this config file contained the lines… # PermitRootLogin yes since we want to permit a root login, we uncommented this line. We would then like to take this `sshd_config` file and have Buildroot insert it into the output images, so we don’t have to edit it every time we flash a new SD card. This is done using a “rootfs overlay”, which is just a file that buildroot will copy into the rootfs of the image. I was then able to get root access over ssh from the host machine!

System Characterization

One of the primary reasons for building the larger board was to do power characterization. I want to know if I need a 5, 10, or 15W flyback supply that converts from 90V-300V down to 5V. To determine this, you would normally look at the datasheets, make a power budget and figure it out like a civilized person. But I’m not getting paid, and I don’t want to be civilized, so let's turn everything up to 11 and see what the current draw is. The max current consumption for this device is as follows.

  • All 4 cores going full burn
  • RAM being used
  • Both wifi chips transmitting
  • SD card read/write

Memory Testing

One major concern I had with the DDR3 RAM was the length matching requirements. To test memory fidelity, we can use an application called memtester. Below I’m testing half a gig of ram under various conditions. The output looks good, which gives me confidence in the design.

# memtester 1000000 1
memtester version 4.5.0 (32-bit)
Copyright (C) 2001-2020 Charles Cazabon.
Licensed under the GNU General Public License version 2 (only).
pagesize is 4096
pagesizemask is 0xfffff000
want 576MB (603979776 bytes)
got 576MB (603979776 bytes), trying mlock ...locked.
Loop 1/1:
Stuck Address : ok
Random Value : ok
Compare XOR : ok
Compare SUB : ok
Compare MUL : ok
Compare DIV : ok
Compare OR : ok
Compare AND : ok
Sequential Increment: ok
Solid Bits : ok
Block Sequential : ok
Checkerboard : ok
Bit Spread : ok
Bit Flip : ok
Walking Ones : ok
Walking Zeroes : ok
8-bit Writes : ok
16-bit Writes : ok
Done.

Apache Webserver

The Apache webserver is one of the most influential projects in the open-source ecosystem. If you’re familiar with the “LAMP” software bundle, Apache is the “A”. It does one thing, and it does it well: host HTTP servers. If the Wifiwart ever makes it to market, I want users to do some configuration through a front-end webpage. So to test it out, I installed the webserver, booted the device and navigated to its IP in chrome, and it just worked…

Hack the Planet

Next Steps

Up to this point, I’ve outlined a non-form-factor conception, design, assembly, bringup and characterization. Right now, I feel confident in the hardware and software, and I can begin the “form factor design”. Since the final design is the same electronics, I can be laser-focused on the mechanical aspects.

Updated CAD :)

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store