<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>にゅーステレオ天国 (SBCについての記事)</title><link>https://kuri65536.bitbucket.io/</link><description></description><atom:link href="https://kuri65536.bitbucket.io/tags/sbc.xml" rel="self" type="application/rss+xml"></atom:link><language>ja</language><copyright>Contents © 2025 &lt;a href="mailto:kuri65536@hotmail.com"&gt;Shimoda&lt;/a&gt; </copyright><lastBuildDate>Sun, 17 Aug 2025 00:35:44 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>hostapd) setup WiFi access point with Raspberry-Pi OS</title><link>https://kuri65536.bitbucket.io/posts/id00842/</link><dc:creator>Shimoda</dc:creator><description>&lt;h3 id="install-the-required-packages"&gt;install the required packages&lt;/h3&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;apt&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;-y&lt;span class="w"&gt; &lt;/span&gt;hostapd
&lt;/pre&gt;&lt;/div&gt;

&lt;h3 id="create-the-hostapd-settings"&gt;create the hostapd settings&lt;/h3&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;interface = wlan0
...
&lt;/pre&gt;&lt;/div&gt;

&lt;h3 id="unblock-the-wifi-interface-with-rfkill"&gt;unblock the WiFi interface with rfkill&lt;/h3&gt;
&lt;p&gt;we need unblocking the WiFi interface before run hostapd.
there are several ways to unblock the WiFi interface.
I choose the unblock script for 8812au.&lt;/p&gt;
&lt;p&gt;there is a sample script to unblock,
save it into &lt;code&gt;/root/unblock-rtl8812au.sh&lt;/code&gt;::&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="ch"&gt;#! /bin/bash&lt;/span&gt;
&lt;span class="nv"&gt;find_tgt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/sys/class/net/wlan*
&lt;span class="nv"&gt;find_opt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"-q 8812au"&lt;/span&gt;

&lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;find_8812au_dev&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;i&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$find_tgt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;do&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;udevadm&lt;span class="w"&gt; &lt;/span&gt;info&lt;span class="w"&gt; &lt;/span&gt;-a&lt;span class="w"&gt; &lt;/span&gt;--path&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;grep&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$find_opt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;then&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;udevadm&lt;span class="w"&gt; &lt;/span&gt;info&lt;span class="w"&gt; &lt;/span&gt;-a&lt;span class="w"&gt; &lt;/span&gt;--path&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;sed&lt;span class="w"&gt; &lt;/span&gt;-n&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'s/[ \t]*KERNEL=="\(.*\)"/\1/p'&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;done&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;


&lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;find_phy_name&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nv"&gt;n&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;iw&lt;span class="w"&gt; &lt;/span&gt;dev&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;info&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;sed&lt;span class="w"&gt; &lt;/span&gt;-n&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'s/[ \t]\+wiphy[ \t]\+\([0-9]\+\)/\1/p'&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nv"&gt;wiphy&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"Wiphy phy&lt;/span&gt;&lt;span class="nv"&gt;$n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;iw&lt;span class="w"&gt; &lt;/span&gt;list&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;grep&lt;span class="w"&gt; &lt;/span&gt;-e&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'^\S'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;while&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;read&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;l&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;do&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="c1"&gt;#cho "$l - $n - $wiphy"&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[[&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$l&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$wiphy&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;]]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;then&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"phy&lt;/span&gt;&lt;span class="nv"&gt;$n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;done&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;


&lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;find_rfkill_id&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nv"&gt;tmp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;rfkill&lt;span class="w"&gt; &lt;/span&gt;list&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;grep&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;cut&lt;span class="w"&gt; &lt;/span&gt;-d&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;" "&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-f&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;tmp&lt;/span&gt;&lt;span class="p"&gt;%%:&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;


&lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;unblock&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;sleep&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nv"&gt;dev&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;find_8812au_dev&lt;span class="k"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"got device: &lt;/span&gt;&lt;span class="nv"&gt;$dev&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nv"&gt;phy&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;find_phy_name&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$dev&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"got phy: &lt;/span&gt;&lt;span class="nv"&gt;$phy&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nv"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;find_rfkill_id&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$phy&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;rfkill&lt;span class="w"&gt; &lt;/span&gt;unblock&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$id&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

unblock
&lt;/pre&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;h3 id="modify-the-systemd-settings"&gt;modify the systemd settings&lt;/h3&gt;
&lt;p&gt;to enable the unblock interface, I use the systemd service settings &lt;code&gt;ExecStartPre&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;edit the &lt;code&gt;hostapd.conf&lt;/code&gt; directly,
copy to the new service,
or make the override settings by &lt;code&gt;systemctl edit hostapd.service&lt;/code&gt;.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;[Service]
...
ExecStartPre=/root/unblock-rtl8812au.sh
&lt;/pre&gt;&lt;/div&gt;

&lt;h3 id="start-and-check-the-service"&gt;start and check the service&lt;/h3&gt;
&lt;p&gt;after modify the settings for systemd, run and confirm
the access point service.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;systemctl&lt;span class="w"&gt; &lt;/span&gt;daemon-reload
systemctl&lt;span class="w"&gt; &lt;/span&gt;start&lt;span class="w"&gt; &lt;/span&gt;hostapd
systemctl&lt;span class="w"&gt; &lt;/span&gt;status&lt;span class="w"&gt; &lt;/span&gt;hostapd
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;then enable the service:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;systemctl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;enable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;hostapd
&lt;/pre&gt;&lt;/div&gt;

&lt;!-- TETHER_END --&gt;</description><category>hack</category><category>linux</category><category>SBC</category><guid>https://kuri65536.bitbucket.io/posts/id00842/</guid><pubDate>Thu, 14 Aug 2025 02:00:00 GMT</pubDate></item><item><title>hostapd) tunning the WiFi access point to speed up</title><link>https://kuri65536.bitbucket.io/posts/id00850/</link><dc:creator>Shimoda</dc:creator><description>&lt;p&gt;Improve the WiFi access speed.&lt;/p&gt;
&lt;p&gt;tuning the hostapd.conf to make it from 8Mbps to 60Mbps in my case. &lt;/p&gt;
&lt;h3 id="check-wifi-interface-capability"&gt;check WiFi interface capability&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;iw list&lt;/code&gt; to get the capability, my USB WiFi results::&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$ iw list
...
     Band 1:
         Capabilities: 0x1962
             HT20/HT40
             Static SM Power Save
             RX HT20 SGI
             RX HT40 SGI
             RX STBC 1-stream
             Max AMSDU length: 7935 bytes
             DSSS/CCK HT40
...
     Band 2:
         Capabilities: 0x862
             HT20/HT40
             Static SM Power Save
             RX HT20 SGI
             RX HT40 SGI
             No RX STBC
             Max AMSDU length: 7935 bytes
             No DSSS/CCK HT40
...
         VHT Capabilities (0x03c031a2):
             Max MPDU length: 11454
             Supported Channel Width: neither 160 nor 80+80
             short GI (80 MHz)
             TX STBC
             SU Beamformee
             +HTC-VHT
&lt;/pre&gt;&lt;/div&gt;

&lt;h3 id="modify-the-hostapdconf"&gt;modify the hostapd.conf&lt;/h3&gt;
&lt;p&gt;enable enhanced capabilities by &lt;code&gt;ht_capab&lt;/code&gt; or &lt;code&gt;vht_capab&lt;/code&gt; in hostapd.conf,
almost items disabled by defaults.&lt;/p&gt;
&lt;p&gt;I can't find the &lt;code&gt;ht_capab&lt;/code&gt; options manual,
so cut and try will be needed.&lt;/p&gt;
&lt;p&gt;```text# interface=wlan0
interface=wlan0
bridge=br0
driver=nl80211&lt;/p&gt;
&lt;p&gt;ctrl_interface=/var/run/hostapd
ctrl_interface_group=0&lt;/p&gt;
&lt;p&gt;ssid=samplesample
macaddr_acl=0&lt;/p&gt;
&lt;p&gt;country_code=JP
ieee80211d=1&lt;/p&gt;
&lt;p&gt;hw_mode=a
channel=36&lt;/p&gt;
&lt;p&gt;auth_algs=1
wpa=2
wpa_psk=1234567890abcdef1234567890abcdef1234567890123456789abcdef1234567
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP&lt;/p&gt;
&lt;p&gt;wmm_enabled=1
ieee80211w=0
ieee80211ac=1
ieee80211n=1&lt;/p&gt;
&lt;p&gt;ht_capab=[HT20-][HT40+][SHORT-GI-20][SHORT-GI-40][DSSS_CCK-40][MAX-AMSDU-7935]
vht_capab=[SHORT-GI-80][TX-STBC-1][+HTC-VHT][MAX-AMSDU-11454]
```&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="improve-for-24ghz-access-point-failed"&gt;improve for 2.4GHz access point ... failed&lt;/h3&gt;
&lt;p&gt;I can't get the faster WiFi speed for &lt;code&gt;hw_mode=g&lt;/code&gt; as 2.4GHz settings.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ht_capab&lt;/code&gt; makes few effects to WiFi speed.&lt;/p&gt;
&lt;!-- TETHER_END --&gt;</description><category>hack</category><category>linux</category><category>SBC</category><guid>https://kuri65536.bitbucket.io/posts/id00850/</guid><pubDate>Thu, 14 Aug 2025 02:00:00 GMT</pubDate></item><item><title>setup the RTL8812AU driver with Raspberry-Pi OS kernel 6.12</title><link>https://kuri65536.bitbucket.io/posts/id00845/</link><dc:creator>Shimoda</dc:creator><description>&lt;p&gt;This is an experience to build the RTL8812AU driver in
Raspberry-Pi OS at 2025/07.&lt;/p&gt;
&lt;h3 id="get-8812au-driver-from-github"&gt;get 8812au driver from github&lt;/h3&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;git&lt;span class="w"&gt; &lt;/span&gt;clone&lt;span class="w"&gt; &lt;/span&gt;https://github.com/morrownr/8812au-20210820
&lt;/pre&gt;&lt;/div&gt;

&lt;h3 id="build"&gt;build&lt;/h3&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;apt&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;-y&lt;span class="w"&gt; &lt;/span&gt;build-essential
$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;apt&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;-y&lt;span class="w"&gt; &lt;/span&gt;dkms
$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;apt&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;-y&lt;span class="w"&gt; &lt;/span&gt;bc
$&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;8812au-20210820
$&lt;span class="w"&gt; &lt;/span&gt;make&lt;span class="w"&gt; &lt;/span&gt;build
&lt;/pre&gt;&lt;/div&gt;

&lt;h3 id="install-and-use-the-driver"&gt;install and use the driver&lt;/h3&gt;
&lt;p&gt;run the script &lt;code&gt;install-driver.sh&lt;/code&gt; to install the modules.
the &lt;code&gt;install-driver.sh&lt;/code&gt; will also set the &lt;code&gt;modprobe&lt;/code&gt; settings.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;bash&lt;span class="w"&gt; &lt;/span&gt;install-driver.sh
$&lt;span class="w"&gt; &lt;/span&gt;modprobe&lt;span class="w"&gt; &lt;/span&gt;rtl8812au
$&lt;span class="w"&gt; &lt;/span&gt;ip&lt;span class="w"&gt; &lt;/span&gt;addr
...
wlan1&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="c1"&gt;# &amp;lt;- 8812au&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;!--
## enable the driver at startup
In my case, add the loading module to `/etc/rc-local`


&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;modprobe&lt;span class="w"&gt; &lt;/span&gt;rtl8812au
EOF
&lt;/pre&gt;&lt;/div&gt;



Normally, the module load automatically or
use `/etc/modules` to load the extended modules.
--&gt;

&lt;h3 id="error-at-build"&gt;error at build&lt;/h3&gt;
&lt;p&gt;In my case,
Errors were shown in &lt;code&gt;make.log&lt;/code&gt;&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;undefined kasan_hw_tag_enabled
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;recent Raspberry-Pi OS enable the KASAN but
the kernel header package is corrupted. (?)&lt;/p&gt;
&lt;p&gt;to fix it, edit the headers to fit the kernel status.&lt;/p&gt;
&lt;p&gt;edit the &lt;code&gt;kasan-enable.h&lt;/code&gt; in &lt;code&gt;kernel-common/include/linux/kasan.h&lt;/code&gt;&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="k"&gt;static&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kr"&gt;inline&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;bool&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;kasan_hw_tags_enabled&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;h3 id="wifi-error-or-stall-after-several-hours"&gt;WiFi Error or stall after several hours&lt;/h3&gt;
&lt;p&gt;use the broadcom driver clone: &lt;a href="https://github.com/morrownr/8812au-20210820"&gt;https://github.com/morrownr/8812au-20210820&lt;/a&gt; .&lt;/p&gt;
&lt;p&gt;I met the WiFi errors ``
after several hours from boot with
the community driver &lt;a href="https://github.com/lwfinger/rtw88"&gt;https://github.com/lwfinger/rtw88&lt;/a&gt; .&lt;/p&gt;
&lt;!-- TETHER_END --&gt;

&lt;p&gt;kasan.hの現象は、kernel-header展開中に&lt;br&gt;
overlayfs適用してしまっておかしくなった？&lt;/p&gt;</description><category>hack</category><category>linux</category><category>SBC</category><guid>https://kuri65536.bitbucket.io/posts/id00845/</guid><pubDate>Thu, 14 Aug 2025 02:00:00 GMT</pubDate></item><item><title>apply overlayfs several directories.</title><link>https://kuri65536.bitbucket.io/posts/id00844/</link><dc:creator>Shimoda</dc:creator><description>&lt;p&gt;how to reduce the access to SD card in Raspberry-Pi OS.&lt;/p&gt;
&lt;p&gt;the one method for it, use the overlay filesystem to
several paths in SD card.&lt;/p&gt;
&lt;p&gt;here is the script sample to mount the overlayfs onto
SD card root file system::&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;mount-overlay-usr-src:&lt;span class="w"&gt; &lt;/span&gt;/usr/src/f_overlay
mount-overlay-var-log:&lt;span class="w"&gt; &lt;/span&gt;/var/log/f_overlay

/usr/src/f_overlay:&lt;span class="w"&gt; &lt;/span&gt;d:&lt;span class="o"&gt;=&lt;/span&gt;/mnt/storage1/usr-src
/usr/src/f_overlay:&lt;span class="w"&gt; &lt;/span&gt;l:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;lowerdir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/usr/src
/usr/src/f_overlay:&lt;span class="w"&gt; &lt;/span&gt;u:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$d&lt;/span&gt;/usr-src-upper
/usr/src/f_overlay:&lt;span class="w"&gt; &lt;/span&gt;w:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$d&lt;/span&gt;/usr-src-temp
/usr/src/f_overlay:
&lt;span class="w"&gt;    &lt;/span&gt;mkdir&lt;span class="w"&gt; &lt;/span&gt;-p&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$u&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$w&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;mount&lt;span class="w"&gt; &lt;/span&gt;-t&lt;span class="w"&gt; &lt;/span&gt;overlay&lt;span class="w"&gt; &lt;/span&gt;overlay&lt;span class="w"&gt; &lt;/span&gt;-o&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$l&lt;/span&gt;,upperdir&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$u&lt;/span&gt;,workdir&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$w&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;dir&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$@&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;touch&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$@&lt;/span&gt;

/var/log/f_overlay:&lt;span class="w"&gt; &lt;/span&gt;d:&lt;span class="o"&gt;=&lt;/span&gt;/mnt/storage1/var-log
/var/log/f_overlay:&lt;span class="w"&gt; &lt;/span&gt;l:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;lowerdir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/var/log
/var/log/f_overlay:&lt;span class="w"&gt; &lt;/span&gt;u:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$d&lt;/span&gt;/var-log-upper
/var/log/f_overlay:&lt;span class="w"&gt; &lt;/span&gt;w:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$d&lt;/span&gt;/var-log-temp
/var/log/f_overlay:
&lt;span class="w"&gt;    &lt;/span&gt;mkdir&lt;span class="w"&gt; &lt;/span&gt;-p&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$t&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$w&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;mount&lt;span class="w"&gt; &lt;/span&gt;-t&lt;span class="w"&gt; &lt;/span&gt;overlay&lt;span class="w"&gt; &lt;/span&gt;overlay&lt;span class="w"&gt; &lt;/span&gt;-o&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$l&lt;/span&gt;,upperdir&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$u&lt;/span&gt;,workdir&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$w&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;dir&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$@&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;touch&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$@&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;write down above text to Makefile then run them by::&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;make&lt;span class="w"&gt; &lt;/span&gt;mount-overlay-usr-src
$&lt;span class="w"&gt; &lt;/span&gt;make&lt;span class="w"&gt; &lt;/span&gt;mount-overlay-var-log
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;make it to the systemd unit file for persistence mount.&lt;/p&gt;
&lt;p&gt;create &lt;code&gt;/etc/systemd/system/mount-overlay.service&lt;/code&gt;::&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;cat&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;/etc/systemd/system/mount-overlay.service&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;lt;&amp;lt;EOF&lt;/span&gt;
&lt;span class="s"&gt;[Unit]&lt;/span&gt;
&lt;span class="s"&gt;Description = mount overlay filesystem to reduce SD card access.&lt;/span&gt;
&lt;span class="s"&gt;After = mnt-storage1.mount&lt;/span&gt;

&lt;span class="s"&gt;[Mount]&lt;/span&gt;
&lt;span class="s"&gt;ExecStart = make -C /path/to/script mount-overlay-var-log&lt;/span&gt;
&lt;span class="s"&gt;ExecStop = umount -f /var/log&lt;/span&gt;

&lt;span class="s"&gt;[Install]&lt;/span&gt;
&lt;span class="s"&gt;WantedBy = default.target&lt;/span&gt;
&lt;span class="s"&gt;EOF&lt;/span&gt;

$&lt;span class="w"&gt; &lt;/span&gt;systemctl&lt;span class="w"&gt; &lt;/span&gt;daemon-reload
$&lt;span class="w"&gt; &lt;/span&gt;systemctl&lt;span class="w"&gt; &lt;/span&gt;start&lt;span class="w"&gt; &lt;/span&gt;mount-overlay
$&lt;span class="w"&gt; &lt;/span&gt;systemctl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;enable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;mount-overlay
&lt;/pre&gt;&lt;/div&gt;

&lt;!-- TETHER_END --&gt;</description><category>hack</category><category>linux</category><category>SBC</category><guid>https://kuri65536.bitbucket.io/posts/id00844/</guid><pubDate>Thu, 31 Jul 2025 00:00:00 GMT</pubDate></item><item><title>ARM SBC: install mqtt server with rootless podman</title><link>https://kuri65536.bitbucket.io/posts/id00836/</link><dc:creator>Shimoda</dc:creator><description>&lt;p&gt;install MQTT server to SBC.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;at this time, this MQTT server does not encrypt the communications.
    we need the TLS encryption for it.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;make the configuration file::&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;cat&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;mqtt.conf&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;lt;&amp;lt;EOF&lt;/span&gt;
&lt;span class="s"&gt;allow_anonymous false&lt;/span&gt;
&lt;span class="s"&gt;listener 1883&lt;/span&gt;
&lt;span class="s"&gt;listener 9001&lt;/span&gt;
&lt;span class="s"&gt;protocol websockets&lt;/span&gt;
&lt;span class="s"&gt;persistence true&lt;/span&gt;
&lt;span class="s"&gt;password_file        /srv/mqtt/mqtt.pwfile&lt;/span&gt;
&lt;span class="s"&gt;persistence_file     mqtt.db&lt;/span&gt;
&lt;span class="s"&gt;persistence_location /srv/mqtt/data/&lt;/span&gt;

&lt;span class="s"&gt;user root  # for podman rootless&lt;/span&gt;
&lt;span class="s"&gt;EOF&lt;/span&gt;

points:
-&lt;span class="w"&gt; &lt;/span&gt;persistence_file&lt;span class="w"&gt; &lt;/span&gt;is&lt;span class="w"&gt; &lt;/span&gt;the&lt;span class="w"&gt; &lt;/span&gt;relative&lt;span class="w"&gt; &lt;/span&gt;path&lt;span class="w"&gt; &lt;/span&gt;from&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;persistence_location&lt;span class="sb"&gt;`&lt;/span&gt;
-&lt;span class="w"&gt; &lt;/span&gt;a&lt;span class="w"&gt; &lt;/span&gt;rootless&lt;span class="w"&gt; &lt;/span&gt;podman&lt;span class="w"&gt; &lt;/span&gt;needs&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;root&lt;span class="w"&gt; &lt;/span&gt;user&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;as&lt;span class="w"&gt; &lt;/span&gt;the&lt;span class="w"&gt; &lt;/span&gt;running&lt;span class="w"&gt; &lt;/span&gt;user,
&lt;span class="w"&gt;    &lt;/span&gt;containers&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;mqtt&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;user&lt;span class="w"&gt; &lt;/span&gt;does&lt;span class="w"&gt; &lt;/span&gt;not&lt;span class="w"&gt; &lt;/span&gt;have&lt;span class="w"&gt; &lt;/span&gt;any&lt;span class="w"&gt; &lt;/span&gt;permissions&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;mounted&lt;span class="w"&gt; &lt;/span&gt;points.

create&lt;span class="w"&gt; &lt;/span&gt;the&lt;span class="w"&gt; &lt;/span&gt;container&lt;span class="w"&gt; &lt;/span&gt;file::

&lt;span class="sb"&gt;```&lt;/span&gt;bash
mkdir&lt;span class="w"&gt; &lt;/span&gt;app.mqtt&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;app.mqtt
cat&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Containerfile&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;lt;&amp;lt;EOF&lt;/span&gt;
&lt;span class="s"&gt;FROM debian:12.11-slim&lt;/span&gt;

&lt;span class="s"&gt;RUN apt update -y&lt;/span&gt;
&lt;span class="s"&gt;RUN apt install -y mosquitte&lt;/span&gt;

&lt;span class="s"&gt;RUN mkdir -p /srv/mqtt&lt;/span&gt;
&lt;span class="s"&gt;RUN mosquitte_passwd -c -b /root/mqtt.pwfile admin ??????&lt;/span&gt;
&lt;span class="s"&gt;RUN mosquitte_passwd    -b /root/mqtt.pwfile sensor1 ?????&lt;/span&gt;
&lt;span class="s"&gt;RUN mosquitte_passwd    -b /root/mqtt.pwfile sensor2 ?????&lt;/span&gt;
&lt;span class="s"&gt;RUN mosquitte_passwd    -b /root/mqtt.pwfile viewer  ?????&lt;/span&gt;

&lt;span class="s"&gt;COPY mqtt.conf /srv/mqtt/mqtt.conf&lt;/span&gt;
&lt;span class="s"&gt;CMD ["mosquitte", "-c", "/srv/mqtt/mqtt.conf"]&lt;/span&gt;
&lt;span class="s"&gt;EOF&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;build the container::&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;podman&lt;span class="w"&gt; &lt;/span&gt;build&lt;span class="w"&gt; &lt;/span&gt;-t&lt;span class="w"&gt; &lt;/span&gt;mqtt-server
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;up the container::&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="nv"&gt;ext&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/mnt/external/mqtt
podman&lt;span class="w"&gt; &lt;/span&gt;run&lt;span class="w"&gt; &lt;/span&gt;-v&lt;span class="w"&gt; &lt;/span&gt;/srv/mqtt/data:&lt;span class="nv"&gt;$ext&lt;/span&gt;/data&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;-v&lt;span class="w"&gt; &lt;/span&gt;/srv/mqtt/log:&lt;span class="nv"&gt;$ext&lt;/span&gt;/log&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;-p&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1883&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-p&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;9001&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;-d&lt;span class="w"&gt; &lt;/span&gt;mqtt-server
&lt;/pre&gt;&lt;/div&gt;

&lt;!-- TETHER_END --&gt;</description><category>hack</category><category>linux</category><category>SBC</category><guid>https://kuri65536.bitbucket.io/posts/id00836/</guid><pubDate>Sun, 22 Jun 2025 23:00:00 GMT</pubDate></item><item><title>ARM SBC: podman install</title><link>https://kuri65536.bitbucket.io/posts/id00834/</link><dc:creator>Shimoda</dc:creator><description>&lt;p&gt;My experience in the debian armhf.
To install podman, according to &lt;a href="https://wiki.debian.org/Podman"&gt;https://wiki.debian.org/Podman&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;it is need to enable the registory at search::&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;apt&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;podman
&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'unqualified-search-registries=["quay.io"]'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;/tmp/registries.conf
&lt;span class="nv"&gt;CONTAINERS_REGISTRIES_CONF&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/tmp/registries.conf&lt;span class="w"&gt; &lt;/span&gt;podman&lt;span class="w"&gt; &lt;/span&gt;search&lt;span class="w"&gt; &lt;/span&gt;podman
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;move cache directory to an external drive,&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;mkdir&lt;span class="w"&gt; &lt;/span&gt;-o&lt;span class="w"&gt; &lt;/span&gt;/nmt/external/containers.&lt;span class="nv"&gt;$USER&lt;/span&gt;
sudo&lt;span class="w"&gt; &lt;/span&gt;chown&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$USER&lt;/span&gt;:&lt;span class="nv"&gt;$USER&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/nmt/external/containers.&lt;span class="nv"&gt;$USER&lt;/span&gt;
sudo&lt;span class="w"&gt; &lt;/span&gt;mount&lt;span class="w"&gt; &lt;/span&gt;-o&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;bind&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/mnt/external/containers.&lt;span class="nv"&gt;$USER&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;~/.local/share/containers
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;thanks &lt;a href="https://github.com/containers/podman/issues/1916#issuecomment-443839998"&gt;podman github&lt;/a&gt; .&lt;/p&gt;
&lt;p&gt;I want to build the application from a debian image.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;podman&lt;span class="w"&gt; &lt;/span&gt;pull&lt;span class="w"&gt; &lt;/span&gt;debian:12.11-slim
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;build the application.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;mkdir&lt;span class="w"&gt; &lt;/span&gt;app&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;app
&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"FROM debian:12.11-slim"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Containerfile
podman&lt;span class="w"&gt; &lt;/span&gt;build
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;install the network program:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;apt&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;uidmap
sudo&lt;span class="w"&gt; &lt;/span&gt;apt&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;slirp4netns
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;thanks &lt;a href="https://github.com/containers/podman/issues/7810"&gt;github issue&lt;/a&gt; .&lt;/p&gt;
&lt;p&gt;then run the container:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;podman&lt;span class="w"&gt; &lt;/span&gt;run
&lt;/pre&gt;&lt;/div&gt;

&lt;!-- TETHER_END --&gt;</description><category>debian</category><category>linux</category><category>SBC</category><guid>https://kuri65536.bitbucket.io/posts/id00834/</guid><pubDate>Sun, 15 Jun 2025 23:00:00 GMT</pubDate></item><item><title>ARM SBC: overlayfs error -2</title><link>https://kuri65536.bitbucket.io/posts/id00835/</link><dc:creator>Shimoda</dc:creator><description>&lt;p&gt;overlayfs errors had began from 2025/05/25,
since the SBC was launched at 2024/09/23::&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;zram-config stop 2025-02-25-08:00:44-JST
ztab remove log /zram1 /var/log /opt/zram/log.bind
serviceConfiguration: Stopping services that interfere with zram device configuration.
removeZdir: Beginning removal of device /dev/zram1.
umount: /var/log (overlay1) unmounted
mergeOverlay: Beginning merge of /opt/zram/opt/zram/log.bind.
ls: /opt/zram/zram1/upper: Input/output error
/opt/zram:
ls: /opt/zram/zram1: Input/output error
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;I think, it is worth to use overlayfs and zram-config at the sametime,
then the overlayfs cannot mount at boot::&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;kernel: overlayfs: "xino" feature enabled using 2 upper inode
kernel: overlayfs: failed to verify origin (/, ino=12,
kernel: overlayfs: failed to verify upper root origin
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;to fix it, disable the features of overlayfs at mount. by::&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;index=off,metacopy=off
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;here is my fstab.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;overlay /var/log overlay noauto,index=off,metacopy=off,workdir=/mnt/external/var-log.tmp,lowerdir=/var/log,upperdir=/mnt/external/var-log 0 0
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;thanks for &lt;a href="https://bbs.archlinux.org/viewtopic.php?pid=2031633#p2031633"&gt;arch linux BBS&lt;/a&gt;&lt;/p&gt;
&lt;!-- TETHER_END --&gt;

&lt;p&gt;overlayfsにエラー発生して、以後書き込みができなくなっていた。&lt;/p&gt;
&lt;p&gt;その後、再起動してもマウントできなくなった。&lt;/p&gt;
&lt;p&gt;あまり起こらないエラーのようで&lt;br&gt;
対処法がなかった。&lt;/p&gt;
&lt;p&gt;上のようにすると回避はできた。&lt;/p&gt;
&lt;p&gt;何の機能でどういうメリットがあるのかは&lt;br&gt;
調べていないが...&lt;/p&gt;</description><category>hack</category><category>linux</category><category>SBC</category><guid>https://kuri65536.bitbucket.io/posts/id00835/</guid><pubDate>Sat, 14 Jun 2025 23:00:00 GMT</pubDate></item><item><title>ARM SBC: セットアップ</title><link>https://kuri65536.bitbucket.io/posts/id00766/</link><dc:creator>Shimoda</dc:creator><description>&lt;p&gt;整備していく&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[x] hardware: new USB-hub&lt;/li&gt;
&lt;li&gt;[x] hardware: new MCU Board to USB&lt;/li&gt;
&lt;li&gt;[x] hardware: MCU Board - センサ等を接続&lt;/li&gt;
&lt;li&gt;[x] hardware: mSATA SSD - USB&lt;/li&gt;
&lt;li&gt;[x] hardware: MCU Board - USB&lt;/li&gt;
&lt;li&gt;[x] hardware: 電源ケーブルの整理 - USB-HubとSBC電源を分岐&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[x] hardware: SSD thermal pad, heat sink&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;5Vの電源を細工するのは多いですね。&lt;br&gt;
    ACアダプタ増やすより分岐ケーブル作る方がスッキリするので&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;mSATAのアダプタがなかったので購入。&lt;br&gt;
    動かしたけどすごく熱を持つ...&lt;/li&gt;
&lt;li&gt;MCUとセンサの接続は、本数が多くて大変だった。&lt;br&gt;
    外れないようにケーブルにホットボンドとかした。(久々...)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ソフト面も整備していく&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[x] setup nim&lt;/li&gt;
&lt;li&gt;[x] setup dnsmasq - 自宅内のDNS(サブ)&lt;/li&gt;
&lt;li&gt;[x] setup ntp     - systemd-timesyncd はじめて&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[x] config custom - register to systemctl&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[x] program: loop / daemon&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;[ ] program: &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;確認もいろいろ&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[x] watt ... Normal+WiFi 4.5-5.0W&lt;/li&gt;
&lt;li&gt;[x] watt ... WiFi+Ether  5.5W&lt;/li&gt;
&lt;li&gt;[x] watt ... WiFi+Ether+MCU+Fan  5.9W&lt;/li&gt;
&lt;li&gt;[ ] watt ... Normal      ?&lt;/li&gt;
&lt;li&gt;[ ] SD speed ...&lt;/li&gt;
&lt;li&gt;[x] SSD speed ... 30MB/sec&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- TETHER_END --&gt;

&lt;h4 id="ssd-speed"&gt;SSD speed&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;hdparm&lt;/code&gt; で確認したSSD読込み速度。&lt;br&gt;
前回とほとんど同じ。&lt;br&gt;
ほとんどUSBの速度で決まってそう。&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;hdparm&lt;span class="w"&gt; &lt;/span&gt;-Tt&lt;span class="w"&gt; &lt;/span&gt;/dev/sda1

/dev/sda1:
&lt;span class="w"&gt; &lt;/span&gt;Timing&lt;span class="w"&gt; &lt;/span&gt;cached&lt;span class="w"&gt; &lt;/span&gt;reads:&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="m"&gt;684&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;MB&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;.00&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;seconds&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;341&lt;/span&gt;.64&lt;span class="w"&gt; &lt;/span&gt;MB/sec
&lt;span class="w"&gt; &lt;/span&gt;Timing&lt;span class="w"&gt; &lt;/span&gt;buffered&lt;span class="w"&gt; &lt;/span&gt;disk&lt;span class="w"&gt; &lt;/span&gt;reads:&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;92&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;MB&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;.02&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;seconds&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;30&lt;/span&gt;.45&lt;span class="w"&gt; &lt;/span&gt;MB/sec
shinji@tvbox:/home/root$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;hdparm&lt;span class="w"&gt; &lt;/span&gt;-Tt&lt;span class="w"&gt; &lt;/span&gt;/dev/sda1

/dev/sda1:
&lt;span class="w"&gt; &lt;/span&gt;Timing&lt;span class="w"&gt; &lt;/span&gt;cached&lt;span class="w"&gt; &lt;/span&gt;reads:&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="m"&gt;690&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;MB&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;.00&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;seconds&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;344&lt;/span&gt;.97&lt;span class="w"&gt; &lt;/span&gt;MB/sec
&lt;span class="w"&gt; &lt;/span&gt;Timing&lt;span class="w"&gt; &lt;/span&gt;buffered&lt;span class="w"&gt; &lt;/span&gt;disk&lt;span class="w"&gt; &lt;/span&gt;reads:&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;92&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;MB&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;.01&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;seconds&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;30&lt;/span&gt;.53&lt;span class="w"&gt; &lt;/span&gt;MB/sec
shinji@tvbox:/home/root$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;hdparm&lt;span class="w"&gt; &lt;/span&gt;-Tt&lt;span class="w"&gt; &lt;/span&gt;/dev/sda1

/dev/sda1:
&lt;span class="w"&gt; &lt;/span&gt;Timing&lt;span class="w"&gt; &lt;/span&gt;cached&lt;span class="w"&gt; &lt;/span&gt;reads:&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="m"&gt;662&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;MB&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;.01&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;seconds&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;330&lt;/span&gt;.05&lt;span class="w"&gt; &lt;/span&gt;MB/sec
&lt;span class="w"&gt; &lt;/span&gt;Timing&lt;span class="w"&gt; &lt;/span&gt;buffered&lt;span class="w"&gt; &lt;/span&gt;disk&lt;span class="w"&gt; &lt;/span&gt;reads:&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;92&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;MB&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;.01&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;seconds&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;30&lt;/span&gt;.59&lt;span class="w"&gt; &lt;/span&gt;MB/sec
&lt;/pre&gt;&lt;/div&gt;</description><category>hack</category><category>linux</category><category>SBC</category><guid>https://kuri65536.bitbucket.io/posts/id00766/</guid><pubDate>Wed, 06 Nov 2024 00:00:00 GMT</pubDate></item><item><title>ARM SBC: 再始動</title><link>https://kuri65536.bitbucket.io/posts/id00765/</link><dc:creator>Shimoda</dc:creator><description>&lt;p&gt;家にまだ稼働していないSBCがあるので&lt;br&gt;
常時稼働のNASを復活させる計画をする。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;残念ながらGPIOがないタイプ ... 小型のマイコンボードでカバーする&lt;/li&gt;
&lt;li&gt;SSDがつけられない ... USB接続で我慢する(基板だったけど接続は同じだし...)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;やることは下のような感じ&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;筐体を作成する&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SSDがぶらぶらするのを固定&lt;/li&gt;
&lt;li&gt;マイコンボードがぶらぶらのを固定&lt;/li&gt;
&lt;li&gt;Fanありにする&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;マイコンボードでいろいろ作成する&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;温度センサと接続(工作)&lt;/li&gt;
&lt;li&gt;USB-SerialでSBCに結果を送信&lt;/li&gt;
&lt;li&gt;USB-SerialでSBCからFanスピードを受診してFanを回す&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;SBCの調整&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;USB-Serialで温度を取得・保存&lt;/li&gt;
&lt;li&gt;Fan制御&lt;/li&gt;
&lt;li&gt;LED制御&lt;/li&gt;
&lt;li&gt;SW状態の取得、電源終了などの動作&lt;/li&gt;
&lt;li&gt;これらをserverプログラムにする&lt;ul&gt;
&lt;li&gt;制御温度→Fanは、定期的に実行する&lt;/li&gt;
&lt;li&gt;swの取得→イベント発生&lt;/li&gt;
&lt;li&gt;LED制御も定期的に実行する&lt;/li&gt;
&lt;li&gt;LED制御の変更をsocket等で受け付ける&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;</description><category>hack</category><category>linux</category><category>SBC</category><guid>https://kuri65536.bitbucket.io/posts/id00765/</guid><pubDate>Fri, 06 Sep 2024 09:00:00 GMT</pubDate></item><item><title>arm-box: RaspberryPi-3B (5台目)</title><link>https://kuri65536.bitbucket.io/posts/id00555/</link><dc:creator>Shimoda</dc:creator><description>&lt;div&gt;&lt;ul&gt;
&lt;li&gt;2018/01/20 購入&lt;/li&gt;
&lt;li&gt;NAS+Voice kitとして活躍&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;CPU&lt;/th&gt;
&lt;th&gt;BCM2837 1.2GHz&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Mem&lt;/td&gt;
&lt;td&gt;1GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Storage&lt;/td&gt;
&lt;td&gt;4GB SD card&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keyboard&lt;/td&gt;
&lt;td&gt;なし&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mouse&lt;/td&gt;
&lt;td&gt;なし&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Weight&lt;/td&gt;
&lt;td&gt;???g&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Monitor&lt;/td&gt;
&lt;td&gt;なし&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Battery&lt;/td&gt;
&lt;td&gt;なし&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;I/F 1&lt;/td&gt;
&lt;td&gt;USB x4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;I/F 2&lt;/td&gt;
&lt;td&gt;Ethernet 1000M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OS&lt;/td&gt;
&lt;td&gt;Raspibian&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;value&lt;/td&gt;
&lt;td&gt;4,839&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a href="https://kuri65536.bitbucket.io/posts/id00555/"&gt;続きを読む…&lt;/a&gt; (残りを読むのに必要な時間は1分)&lt;/p&gt;&lt;/div&gt;</description><category>complogs</category><category>SBC</category><guid>https://kuri65536.bitbucket.io/posts/id00555/</guid><pubDate>Thu, 05 Sep 2024 04:00:00 GMT</pubDate></item></channel></rss>