Wi-Fi安定動作のおまじない

ネットをあれこれ漁っていると、この Stick PCと非常に似通った構成の中華製タブレットPCの情報に数多くぶち当たる。
# 典型的なキーワードは bay trailとか rtl8723bsあたり。
# ただ、どれも「不安定」ということに関する Q&Aや試行錯誤の記録なので、気分は落ち込むばかり。 :-(

一方で、いきなりハングアップしたり WiFiが遅くなる現象は、使い込んでいるうちに、どうやら少し放置したり、負荷がまったくかからないようなタイミングで起きることが多いように感じるようになった。
# いったい何度、ヒヤヒヤしながら powerボタンを長押しした事か... ^^;;
ということは、もしかして power managementが悪さをして、電源供給が頻繁に切れているのではないかと思い至る。
もしこの推測が正しければ、無線LANの power managementを OFFにしてやればいいはず。

その線であれこれ調べると、iwconfig wlan0 power offコマンドを実行すればいいらしいとわかり、期待しながら実行してみると、
> Error for wireless request "Set Power Management" (8B2C) :
> SET failed on device wlan0 ; Operation not permitted.
というつれない返事...
どうもデバイスドライバが iwconfigの発行する ioctlには対応していないらしい。

しかし、ドライバ固有のオプションがある可能性はあるかもしれないと思い、「rtl8723bs power management」で検索してみたところ、
https://github.com/hadess/rtl8723bs/issues/33
に行きついた。
そこには、ドライバオプションではなく、こんな↓おまじないを試してみな、っていう書き込みが...
======================================================
echo 1 > /sys/devices/system/cpu/cpu0/cpuidle/state2/disable
echo 1 > /sys/devices/system/cpu/cpu0/cpuidle/state3/disable
echo 1 > /sys/devices/system/cpu/cpu0/cpuidle/state4/disable
echo 1 > /sys/devices/system/cpu/cpu0/cpuidle/state5/disable

echo 1 > /sys/devices/system/cpu/cpu1/cpuidle/state2/disable
echo 1 > /sys/devices/system/cpu/cpu1/cpuidle/state3/disable
echo 1 > /sys/devices/system/cpu/cpu1/cpuidle/state4/disable
echo 1 > /sys/devices/system/cpu/cpu1/cpuidle/state5/disable

echo 1 > /sys/devices/system/cpu/cpu2/cpuidle/state2/disable
echo 1 > /sys/devices/system/cpu/cpu2/cpuidle/state3/disable
echo 1 > /sys/devices/system/cpu/cpu2/cpuidle/state4/disable
echo 1 > /sys/devices/system/cpu/cpu2/cpuidle/state5/disable

echo 1 > /sys/devices/system/cpu/cpu3/cpuidle/state2/disable
echo 1 > /sys/devices/system/cpu/cpu3/cpuidle/state3/disable
echo 1 > /sys/devices/system/cpu/cpu3/cpuidle/state4/disable
echo 1 > /sys/devices/system/cpu/cpu3/cpuidle/state5/disable

echo on > /sys/class/mmc_host/mmc0/device/power/control
echo on > /sys/class/mmc_host/mmc1/device/power/control
======================================================

こういうのは本当は詳細な意味を調べてから実行するべきだが、モタモタしているとハングするので、藁にもすがる思いで実行してみた瞬間...明らかにレスポンスが向上している。

とにかく、これまでは同じ LAN内への pingが 300ms~ 2000msなんていうバカげた遅さで、あげくにハングアップしちゃったりしてたのが、通常の PC同様に安定して 2ms以下で返ってくるようになっている。素晴らしすぎる。 :-)

というわけで、さっそく↑のおまじないを /etc/rc.local に書き込んで reboot!
その後、topで様子を見ながらずっと動かし続けたが、まったく安定している。

理屈的にはおそらく、これまでより電池の持ちは悪くなるかもしれないので、何時間くらい連続動作できるか検証してみたい。
# オートガイダーへの供給を含めて 10時間くらい持ってくれれば御の字か。