<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0"
 xmlns:blogChannel="http://backend.userland.com/blogChannelModule"
>

<channel>
<title><![CDATA[Dobrica Pavlinušić's random unstructured stuff: esp8089]]></title>
<link>https://saturn.ffzg.hr/rot13/index.cgi?esp8089</link>
<description></description>
<pubDate>Thu, 04 Jul 2019 07:18:10 -0000</pubDate>
<webMaster>root@saturn.ffzg.hr</webMaster>
<generator>Socialtext Workspace v2.19.0.2</generator>

<item>
<title><![CDATA[esp8089]]></title>
<link>https://saturn.ffzg.hr/rot13/index.cgi?esp8089</link>
<description><![CDATA[<div>Creator: Dobrica Pavlinušić</div><hr/><div class="wiki">
<p>
use <a href="https://saturn.ffzg.hr/rot13/index.cgi?esp8266" title="(57 months)  toc links http www.esp8266.com https github.com esp8266 esp8266-wiki wiki http www.electrodragon.co...">esp8266</a> module over sdio on <a href="https://saturn.ffzg.hr/rot13/index.cgi?cubieboard" title="(83 months)  image cubieboard-ir-module.png file cubieboard_schematic_2012-08-08.pdf file BreadBoard V1.0 03-25 ...">cubieboard</a> as wifi card</p>
<div class="nlw_phrase"><table class="wafl_container">
  <tr>
    <td>
      <div class="wafl_box">
        
          <div class="wafl_titlebox">
            <div class="wafl_title">
              
                Contents: [Dobrica Pavlinušić's random unstructured stuff]
              
            </div>
          </div>
          <div class="wafl_items">
            
              <div class="wiki">
<ul>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#links">Dobrica Pavlinušić's random unstructured stuff (links)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] links} --></span></li>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#setup">Dobrica Pavlinušić's random unstructured stuff (setup)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] setup} --></span></li>

<ul>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#cubieboard_pinout">Dobrica Pavlinušić's random unstructured stuff (cubieboard pinout)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] cubieboard pinout} --></span></li>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#esp_201_pinout_from_top">Dobrica Pavlinušić's random unstructured stuff (ESP-201 pinout from top)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] ESP-=201 pinout from top} --></span></li>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#ch_en_mapping_to_gpio_pin">Dobrica Pavlinušić's random unstructured stuff (CH_EN mapping to GPIO pin)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] CH_EN mapping to GPIO pin} --></span></li>
</ul>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#additional_components">Dobrica Pavlinušić's random unstructured stuff (additional components)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] additional components} --></span></li>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#clear_the_qe_quad_enable_bit_in_the_sreg2_of_a_w25q40bv_or_similar">Dobrica Pavlinušić's random unstructured stuff (clear the QE (quad enable) bit in the sreg2 of a W25Q40BV or similar)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] clear the QE (quad enable) bit in the sreg2 of a W25Q40BV or similar} --></span></li>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#bootloader">Dobrica Pavlinušić's random unstructured stuff (bootloader)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] bootloader} --></span></li>

<ul>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#setup_boudrate_to_74880">Dobrica Pavlinušić's random unstructured stuff (setup boudrate to 74880)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] setup boudrate to 74880} --></span></li>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#boot_modes">Dobrica Pavlinušić's random unstructured stuff (boot modes)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] boot modes} --></span></li>

<ul>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#io15_3v3">Dobrica Pavlinušić's random unstructured stuff (IO15 -&gt; 3V3)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] IO15 -=> 3V3} --></span></li>
<li><span class="nlw_phrase"><a title="section link" href="https://saturn.ffzg.hr/rot13/index.cgi?dobrica_pavlinu%C5%A1i%C4%87_s_random_unstructured_stuff#io15_gnd">Dobrica Pavlinušić's random unstructured stuff (IO15 -&gt; GND)</a><!-- wiki: {link: [Dobrica Pavlinušić's random unstructured stuff] IO15 -=> GND} --></span></li>
</ul></ul></ul>
</div>

            
            
          </div>
        
      </div>
    </td>
  </tr>
</table>
<!-- wiki: {toc: }
--></div><br /><br /><h1 id="links">links</h1>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;<a target="_blank" title="(external link)" href="https://hackaday.io/project/8678-rpi-wifi-hat">https://hackaday.io/project/8678-rpi-wifi-hat</a><br />
&nbsp;&nbsp;&nbsp;&nbsp;<a target="_blank" title="(external link)" href="https://github.com/al177/esp8089">https://github.com/al177/esp8089</a></p>
<h1 id="setup">setup</h1>
<h2 id="cubieboard_pinout">cubieboard pinout</h2>
<pre>
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
</pre>
<br /><h2 id="esp_201_pinout_from_top">ESP-201 pinout from top</h2>
<pre>
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
</pre>
<br /><h2 id="ch_en_mapping_to_gpio_pin">CH_EN mapping to GPIO pin</h2>
<pre>
PE4   &quot;132&quot; =&gt; &quot;PE4&quot;, -&gt; 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!

</pre>
<br /><h1 id="additional_components">additional components</h1>
<p>
<a target="_blank" title="(external link)" href="https://hackaday.io/project/8678-rpi-wifi/details">https://hackaday.io/project/8678-rpi-wifi/details</a></p>
<p>
missing 200 ohm resistors on sdio lines</p>
<p>
4.7k pullup on CH_PD <a target="_blank" title="(external link)" href="https://github.com/al177/esp8089/issues/4">https://github.com/al177/esp8089/issues/4</a></p>
<p>
rpi needs dtoverlay=sdio,poll_once=false</p>
<p>
it's still not clear to me do I have to remove spi flash or not</p>
<p>
newer project with simpler overview</p>
<ul>
<li><a target="_blank" title="(external link)" href="https://hackaday.io/project/12980-pi2wifi">https://hackaday.io/project/12980-pi2wifi</a></li>
<li><a target="_blank" title="(external link)" href="https://sites.google.com/site/mincepi/pi2wifi">https://sites.google.com/site/mincepi/pi2wifi</a></li>
</ul>
<p>
it suggests 33 ohm resistors on sdio, includes dts overlay)</p>
<p>
<a target="_blank" title="(external link)" href="https://hackaday.io/project/8678/instructions">https://hackaday.io/project/8678/instructions</a> also suggest 33 ohm resistors...</p>
<h1 id="clear_the_qe_quad_enable_bit_in_the_sreg2_of_a_w25q40bv_or_similar">clear the QE (quad enable) bit in the sreg2 of a W25Q40BV or similar</h1>
<p>
<a target="_blank" title="(external link)" href="https://github.com/jacksonliam/rpi-bitbang-spiflash">https://github.com/jacksonliam/rpi-bitbang-spiflash</a></p>
<h1 id="bootloader">bootloader</h1>
<h2 id="setup_boudrate_to_74880">setup boudrate to 74880</h2>
<span class="nlw_phrase"><a href="https://saturn.ffzg.hr/rot13/index.cgi/anyboud.c?action=attachments_download;page_name=esp8089;id=20190704060856-0-15819">anyboud.c</a><!-- wiki: {file: anyboud.c} --></span><br /><br /><p>
<a target="_blank" title="(external link)" href="https://gist.githubusercontent.com/sentinelt/3f1a984533556cf890d9/raw/8a35958138b1167fce5c2301a73e2fe06aeb08d8/gistfile1.c">https://gist.githubusercontent.com/sentinelt/3f1a984533556cf890d9/raw/8a35958138b1167fce5c2301a73e2fe06aeb08d8/gistfile1.c</a></p>
<p>
You have to first open terminal in some valid baud rate</p>
<pre>
root@cubieboard:~# microcom -p /dev/ttyS1
</pre>
<br /><p>
and then in another terminal force new speed for port with:</p>
<pre>
dpavlin@cubieboard:~/anybaud$ ./anyboud /dev/ttyS1 74880
Changed successfully.
</pre>
<br /><h2 id="boot_modes">boot modes</h2>
<p>
<a target="_blank" title="(external link)" href="https://github.com/esp8266/esp8266-wiki/wiki/Boot-Process#esp-boot-modes">https://github.com/esp8266/esp8266-wiki/wiki/Boot-Process#esp-boot-modes</a></p>
<p>
The Espressif code can boot in different modes, selected on power-up based on GPIO pin levels. (MTDO is equivalent to GPIO15).</p>
<table style="border-collapse: collapse;" class="formatter_table">
<tr>
<td style="border: 1px solid black;padding: .2em;">MTDO</td>
<td style="border: 1px solid black;padding: .2em;">GPIO0</td>
<td style="border: 1px solid black;padding: .2em;">GPIO2</td>
<td style="border: 1px solid black;padding: .2em;">Mode</td>
<td style="border: 1px solid black;padding: .2em;">Description</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">L</td>
<td style="border: 1px solid black;padding: .2em;">L</td>
<td style="border: 1px solid black;padding: .2em;">H</td>
<td style="border: 1px solid black;padding: .2em;">UART</td>
<td style="border: 1px solid black;padding: .2em;">Download code from UART</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">L</td>
<td style="border: 1px solid black;padding: .2em;">H</td>
<td style="border: 1px solid black;padding: .2em;">H</td>
<td style="border: 1px solid black;padding: .2em;">Flash</td>
<td style="border: 1px solid black;padding: .2em;">Boot from SPI Flash</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">H</td>
<td style="border: 1px solid black;padding: .2em;">x</td>
<td style="border: 1px solid black;padding: .2em;">x</td>
<td style="border: 1px solid black;padding: .2em;">SDIO</td>
<td style="border: 1px solid black;padding: .2em;">Boot from SD-card</td>
</tr>
</table>
<br /><p>
In the bootup message 'boot mode:(x,y)' three low bits of x are {MTDO, GPIO0, GPIO2}.</p>
<h3 id="io15_3v3">IO15 -&gt; 3V3</h3>
<p>
My guess from espressif powerpoint this is sdio boot mode (and it doesn't work for me right now)</p>
<pre>
 ets Jan  8 2013,rst cause:1, boot mode:(7,7)

waiting for host
</pre>
<br /><h3 id="io15_gnd">IO15 -&gt; GND</h3>
<p>
According to hackaday thread, this is correct way to force SDIO mode, serial output is:</p>
<pre>
 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)
</pre>
<br /><p>
This seems like loading from spi flash to me. If I don't touch kernel module, but just toggle CH_EN pin</p>
<pre>
root@cubieboard:/home/dpavlin# cat esp-reset.sh
#!/bin/sh -xe

cd /sys/class/gpio/
echo 132 &gt; export
echo out &gt; gpio132/direction
echo 0 &gt; gpio132/value
echo 1 &gt; gpio132/value
echo 132 &gt; unexport
root@cubieboard:/home/dpavlin# 
</pre>
<br /><p>
I get full bootloader output:</p>
<pre>
 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


</pre>
<br /><p>
It seems that esp tries to load first part, but fails and kernel module toggle CH_PD and resets it.<br />
Time to try soldering resistors between 200 and 33 ohms I guess...</p>
</div>
<hr/><div>Attachments: anyboud.c</div>]]></description>
<author>Dobrica Pavlinu&#x161;i&#x107;</author>
<category></category>
<guid isPermaLink="true">https://saturn.ffzg.hr/rot13/index.cgi?esp8089</guid>
<pubDate>Thu, 04 Jul 2019 07:18:10 -0000</pubDate>
</item>
</channel>
</rss>