use esp8266 module over sdio on cubieboard as wifi card
https://hackaday.io/project/8678-rpi-wifi-hat
https://github.com/al177/esp8089
root@cubieboard:/home/dpavlin# cat mmc3-sdio.txt 22 PI4 2 1 2 [mmc mmc3] SCD3_CMD 24 PI5 2 1 2 [mmc mmc3] SCD3_CLK 26 PI6 2 1 2 [mmc mmc3] SCD3_D0 28 PI7 2 1 2 [mmc mmc3] SCD3_D1 30 PI8 2 1 2 [mmc mmc3] SCD3_D2 32 PI9 2 1 2 [mmc mmc3] SCD4_D3
15 IO0 13 IO15 14 IO2 12 IO13 18 D2 GPIO9 10 IO12 21 CLK GPIO6 9 IO14 20 CMD GPIO11 8 XPD GPIO16 22 D0 GPIO7 7 CHIP_EN 23 D1 GPIO8 32 RST 19 D3 GPIO10 6 TOUT ADC 16 IO4 24 IO5 3.3V GND 3.3V GND
PE4 "132" => "PE4", -> CHIP_EN root@cubieboard:/home/dpavlin/linux-gpio-pinout# modprobe esp8089 esp_reset_gpio=132 # PE4 [Sun Jun 30 19:19:24 2019] ***** EAGLE DRIVER VER:bdf5087c3deb***** [Sun Jun 30 19:19:24 2019] ESP8089 reset via GPIO 132 [Sun Jun 30 19:19:35 2019] esp_sdio_init ------ RETRY ------ [Sun Jun 30 19:19:35 2019] ESP8089 reset via GPIO 132 [Sun Jun 30 19:19:35 2019] ESP8089 reset via GPIO 132 [Sun Jun 30 19:19:46 2019] esp_sdio_init ------ RETRY ------ [Sun Jun 30 19:19:46 2019] ESP8089 reset via GPIO 132 [Sun Jun 30 19:19:47 2019] ESP8089 reset via GPIO 132 [Sun Jun 30 19:19:58 2019] esp_sdio_init ------ RETRY ------ [Sun Jun 30 19:19:58 2019] ESP8089 reset via GPIO 132 [Sun Jun 30 19:19:58 2019] ESP8089 reset via GPIO 132 [Sun Jun 30 19:20:09 2019] esp_sdio_init ------ RETRY ------ [Sun Jun 30 19:20:09 2019] ESP8089 reset via GPIO 132 modprobe: ERROR: could not insert 'esp8089': No such device [Sun Jun 30 19:20:10 2019] eagle sdio can not power up!
https://hackaday.io/project/8678-rpi-wifi/details
missing 200 ohm resistors on sdio lines
4.7k pullup on CH_PD https://github.com/al177/esp8089/issues/4
rpi needs dtoverlay=sdio,poll_once=false
it's still not clear to me do I have to remove spi flash or not
newer project with simpler overview
it suggests 33 ohm resistors on sdio, includes dts overlay)
https://hackaday.io/project/8678/instructions also suggest 33 ohm resistors...
https://github.com/jacksonliam/rpi-bitbang-spiflash
You have to first open terminal in some valid baud rate
root@cubieboard:~# microcom -p /dev/ttyS1
and then in another terminal force new speed for port with:
dpavlin@cubieboard:~/anybaud$ ./anyboud /dev/ttyS1 74880 Changed successfully.
https://github.com/esp8266/esp8266-wiki/wiki/Boot-Process#esp-boot-modes
The Espressif code can boot in different modes, selected on power-up based on GPIO pin levels. (MTDO is equivalent to GPIO15).
MTDO | GPIO0 | GPIO2 | Mode | Description |
L | L | H | UART | Download code from UART |
L | H | H | Flash | Boot from SPI Flash |
H | x | x | SDIO | Boot from SD-card |
In the bootup message 'boot mode:(x,y)' three low bits of x are {MTDO, GPIO0, GPIO2}.
My guess from espressif powerpoint this is sdio boot mode (and it doesn't work for me right now)
ets Jan 8 2013,rst cause:1, boot mode:(7,7) waiting for host
According to hackaday thread, this is correct way to force SDIO mode, serial output is:
ets Jan 8 2013,rst cause:1, boot mode:(3,7) load 0x40100000, len 31020, room 16 ets Jan 8 2013,rst cause:1, boot mode:(3,7)
This seems like loading from spi flash to me. If I don't touch kernel module, but just toggle CH_EN pin
root@cubieboard:/home/dpavlin# cat esp-reset.sh #!/bin/sh -xe cd /sys/class/gpio/ echo 132 > export echo out > gpio132/direction echo 0 > gpio132/value echo 1 > gpio132/value echo 132 > unexport root@cubieboard:/home/dpavlin#
I get full bootloader output:
ets Jan 8 2013,rst cause:1, boot mode:(3,7) load 0x40100000, len 31020, room 16 tail 12 chksum 0x79 ho 0 tail 12 room 4 load 0x3ffe8000, len 2888, room 12 tail 12 chksum 0x6a ho 0 tail 12 room 4 load 0x3ffe8b50, len 14864, room 12 tail 4 chksum 0x45 csum 0x45
It seems that esp tries to load first part, but fails and kernel module toggle CH_PD and resets it.
Time to try soldering resistors between 200 and 33 ohms I guess...