2026年8月11日火曜日

MacBook Pro Late 2013をmacOS Sonomaにアップグレードしてみた。

 昔購入したMacBook Proを久しぶりに引っ張り出してきたらChromeとかドライバ類のサポートが終了していて困ったんだけど、OSもBigSurまでのサポートなのでどうしようもなくなってしまっていた。

調べてみるとOpenCore Legacy Patcherというソフトを使うとサポート終了したデバイスに新しいOSをインストールすることができるらしい。試しにやってみた。

必要なものは32GB以上のUSBメモリ。できればUSB3.0対応が良いらしい。microSDカードとカードリーダーで試してみたけどEFI bootで表示されなかったのでUSBメモリが良さそう。

ちなみにBootcampはBoot Campアシスタントから削除しておいた。

とりあえずBigSurまでアップデートされているのでOpenCore Legacy Patcherをダウンロードしてインストールする。OpenCore-Patcher.pkgをダウンロードして実行すればOK。

インストールが終わったら起動して、インストール用USBメモリを作成する。Create macOS Installerを選ぶ。

今回は少し古めのSonomaにしてみた。USBメモリの作成が終わるとOpenCoreをインストールするように言われるのでOpenCoreをMac本体のSSDにインストールする。

OpenCoreをインストールしたら作成したインストールUSBメモリを指したままOptionキーを押しながら再起動する。

EFI bootが追加されてるのでそちらからSonomaのインストーラーを選択して起動。インストール先をBigSurが入ってるパーティションを選んだのでアップグレードインストールが実行された。

あとは何回か再起動を繰り返すんだけど、特に何もせずに放置しておくと勝手にSonomaが立ち上がってきた。結構な時間がかかったような気がするけどこれは簡単かも。

とりあえずChromeもアップデートできるようになったし、動作もSonomaとBigSurだとさほど変わらない気がするのでまだ使えそう。



2026年8月1日土曜日

OpenWrt用のMACアドレス検索スクリプトを作ってみた。

 DD-WRTからOpenWrtに移行するにあたって、デバイスが多いと何がつながってるのか調べるのにMACアドレス検索を使っていたんだけど、DD-WRTではクリックするだけで見れていたのにOpenWrtのLuCIにはそういう機能がないのでJavaScriptで試してみた。

最初ブックマークレットを作ってみたんだけど、自動リフレッシュのタイミングでリンクが消えてしまうのでluci.jsに追記する形にしてみた。

(function(){function l(n){let w=document.createTreeWalker(n,NodeFilter.SHOW_TEXT,null,!1),t,m=/\b([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})\b/g,r=[];while(t=w.nextNode())t.parentNode&&"SPAN"!==t.parentNode.tagName&&"A"!==t.parentNode.tagName&&"SCRIPT"!==t.parentNode.tagName&&"STYLE"!==t.parentNode.tagName&&m.test(t.nodeValue)&&r.push(t);r.forEach(e=>{let p=e.parentNode;if(!p)return;let h=e.nodeValue.replace(m,o=>{let oui=o.replace(/[:-]/g,"").substring(0,6).toLowerCase();let u=["https:","","uic.jp","mac","address",oui,""].join("/");return'<span data-mac-link="1" title="MAC Vender: '+o+'" style="color:#0066cc;text-decoration:underline;font-weight:bold;cursor:pointer;" onclick="window.open(\''+u+'\',\'_blank\',\'width=800,height=600,scrollbars=yes,resizable=yes\');">'+o+"</span>"});let s=document.createElement("span");s.innerHTML=h;while(s.firstChild)p.insertBefore(s.firstChild,e);p.removeChild(e)})}let v=new MutationObserver(n=>{n.forEach(w=>{w.addedNodes.forEach(t=>{1===t.nodeType&&!t.querySelector('[data-mac-link="1"]')&&l(t)})})});if("loading"===document.readyState)window.addEventListener("DOMContentLoaded",()=>{l(document.body);v.observe(document.body,{childList:!0,subtree:!0})});else{l(document.body);v.observe(document.body,{childList:!0,subtree:!0})}})();

この一行を/www/luci-static/resources/luci.jsの一番最後に追記するだけ。後は設定画面を開いてCtrl+F5を押してリロードするとあらゆるMACアドレス表示部分がリンクに変更されているはず。

これでhostnameが表示されないデバイスでも、デバイスのメーカーがわかりやすくなったのでデバイスが増えても安心。
MACアドレスをクリックするとこんな感じで検索サイトをそのまま小さいウインドウで出してくれる。DD-WRTの機能としては地味に便利だったのでこれでOpenWrtのLuCIも便利になったな。

2026年7月26日日曜日

OpenWrtでDNSブロックを設定してみた。

 OpenWrtでもDD-WRTで使用してたDNSブロックのスクリプトが使いたかったので設定してみた。Softwareからインストールしてもいいんだけど何を使えばいいのかわからなかったのでとりあえず。WRC-X3200GST3に設定してみた。

DD-WRTで使用していたスクリプトはjffsに入れておいてtmpにコピーしてcronで実行していたので、同じ用にStartupスクリプトに入れてtmpにコピーしてcronで動かすようにしてみた。まずはStartupの設定。

#adblock
cat <<'EOF' > /tmp/adblock.sh
#!/bin/sh
logger WAN up script executing
if test -s /tmp/hosts0
then
        rm /tmp/hosts0
fi

logger Downloading http://www.mvps.org/winhelp2002/hosts.txt
(wget -qO- https://winhelp2002.mvps.org/hosts.txt |
    sed '2,$s/0.0.0.0/127.0.0.1/g; s/[[:space:]]*#.*$//g;' |
    grep -v localhost ;
wget -qO- https://280blocker.net/files/280blocker_domain_$(date +"%Y%m").txt |
    sed 's/^/127.0.0.1 /g; s/[[:space:]]*#.*$//g;' |
    grep -v localhost ;
#wget -qO- https://raw.githubusercontent.com/r-a-y/mobile-hosts/master/AdguardDNS.txt |
#    sed 's/0.0.0.0/127.0.0.1/g; s/[[:space:]]*#.*$//g;' |
#    grep -v localhost ;
#wget -qO- https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt | 
#          grep "^||" | grep -v "*" | sed 's/||/127.0.0.1 /g'| tr -d '^';
wget -qO- https://raw.githubusercontent.com/r-a-y/mobile-hosts/master/AdguardMobileAds.txt |
    sed 's/0.0.0.0/127.0.0.1/g; s/[[:space:]]*#.*$//g;' |
    grep -v localhost ;
#wget -qO- https://raw.githubusercontent.com/multiverse2011/adawaylist-jp/master/hosts |
#    sed 's/127.0.0.1/127.0.0.1/g; s/[[:space:]]*#.*$//g;' |
#    grep -v localhost ;
wget -qO- https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt |
    sed 's/^/127.0.0.1 /g; s/[[:space:]]*#.*$//g;' |
    grep -v localhost ;
wget -qO- https://warui.intaa.net/adhosts/hosts.txt |
    sed 's/0.0.0.0/127.0.0.1/g; s/[[:space:]]*#.*$//g;' |
    grep -v localhost ;
echo 127.0.0.1 v-img-ad.interactive-circle.jp ;
echo 127.0.0.1 extrk4.mira-dsp.com ;
echo 127.0.0.1 ve.adingo.jp ;
echo 127.0.0.1 cu-ad.tbs.co.jp;
echo 192.168.1.1 buffalo.setup;
echo 192.168.1.1 web.setting ) | tr ' ' '\t' |
    tr -s '\t' | tr -d '\015' | sed '/^$/d' | sort -u >/tmp/hosts0
sed '/vortex.data.microsoft.com/d' /tmp/hosts0 -i
sed '/imasdk.googleapis.com/d' /tmp/hosts0 -i
sed '/tags.tiqcdn.com/d' /tmp/hosts0 -i
/etc/init.d/dnsmasq restart
EOF

chmod +x /tmp/adblock.sh
/tmp/adblock.sh

WRC-X3200GST3の方はOSがそれ用じゃないのでLEDの設定とかあるけどそれと一緒にStartupに突っ込んでみた。DD-WRT用から変更したのはcurlからwgetにしたりとかdnsmascの設定とかかな。

お次はdnsmasqの設定とcronの設定をsshから。

uci add_list dhcp.@dnsmasq[0].addnhosts='/tmp/hosts0'
uci commit dhcp
echo "0 4 * * * /etc/adblock.sh" >> /etc/crontabs/root

これで後はルーターを再起動してやれば自動でtmpに作成されてAM4時にフィルタが更新されるようになるはず…

ちなみにWAN側のDNSはカスタム設定にしておいた。

2026年7月25日土曜日

かってにスイッチをつけてもらった。

 玄関の電気を自動でつくようにするために"かってにスイッチ"WTK1811WKをポチってみた。やはり今まであったのに無いとちょっと不便だったので…

熱線センサ付自動スイッチというもので、人間が通ると自動で電気がつくんだけどWTK1811WKとかWTK18115WKとかどっちを買えばよかったのかわからなかったんだけど、たまたまWTK1811Wが出品されてて買い逃がしてしまったら新型でLED対応のWTK1811WKが出ていたので即ポチってみた。

WTK1811WKとWTK18115WKの違いはブランクチップが付属しているかどうかの違いっぽい。なのでスイッチの配置によって選ぶ必要があるっぽいけどWTK1811WKのブランクチップを外せばWTK18115WKとして使える。

取り付けは電気工事士の資格が必要なので父にお願いしてつけてもらった。もともと3連が付いていたんだけど1個は4路スイッチであんまり使わないところのが来ていたのでバイパスしてもらって、かってにスイッチが2個分占有するのでちょうどよくつけられた。

かってにスイッチの蓋があいて時間と明るさセンサの感度を調整できるの知らなかった…

2026年7月19日日曜日

OpenWrtにTailscaleをインストールしてみた。

 E8450用のUBIバージョンのOpenWRTをインストールしたWRC-X3200GST3にTailscaleをインストールしてみた。容量がたくさんあるのでいろいろなアプリケーションがインストールできそう。

とりあえずコマンドプロンプトから
ssh root@192.168.1.1

でOpenWRTのSSHにログオンして

apk update
apk add tailscale

でインストールできる。今回使ってるOpenWRTのバージョンは25.12.5です。OpenWRT 25.12からapkコマンドになっているのね…
インストール後、Disk Spaceを11.82MBぐらい消費した。

tailscale up

でTailscaleを起動して、うまく起動するとURLが表示されるのでPCなどからアクセスしてTailscaleにログオンする。
デバイスがうまく登録できるとSuccessとでてログオン完了。

とりあえずこれでTailscaleのネットワークに接続されたんだけど、今回はExit nodeとして設定してみる。

apk add ethtool
ethtool -K lan1 rx-gro-list off ethtool -K lan1 rx-udp-gro-forwarding on
tailscale up --advertise-exit-node --netfilter-mode=off

これでTailscaleのコンソールからExitノードとして設定できるようになる。ethtoolの設定2行はCPU負荷を軽くするための設定のようなんだけど起動のたびに戻ってしまうようなのでこの2行はうまく行ったらStartupに入れておくと良い。ちなみにlan1なのはE8450化するとlan1がWANなので…WANにつながってるインターフェースを設定する感じ。

次にTailscaleのコンソールの設定とファイアーウォールの設定。Tailscaleのコンソールを開いて

openwrtのデバイスのEdit route settingsを開いて
Use as exit nodeにチェックを入れる。

次にOpenWRTの方に戻ってWebUIで設定してみた。

Network→Interfaceのところを開いてAddでtailscaleを追加。

とりあえずこの設定のあとに出てくる画面はデフォルトのままで保存した。これを作っておかないとファイアーウォールの設定が出来ないので…

次にNetwork→Firewallを開いて、Addで

こんな感じにWAN側にパケットを通せるようにして保存。
あとはSave & Applyをする。

これでiPhone側からTailscaleに接続してEXIT NODEをタップするとopenwrtが選べるようになってるはず。なぜか繋がらないときはifconfigをしてtailscale0のIPアドレスを確認してみると良いかも。ipv4のアドレスが存在してなくて再起動したらつながった…
とりあえず最後に再起動するとよいのかも。(Interfaceの設定を変更したりするとどうしてもEXIT NODEが繋がらなくなるんだけど再起動で治る)

前にDD-WRTでWireGuard設定したときよりも簡単かもしれない。これで海外に行ったときも安心だな。

LAN内のデバイスに接続できるようにするのは後日やってみようっと。

2026年7月12日日曜日

WRC-X3200GST3にE8450用OpenWRTを入れて復活。

 電源が入らないというジャンクで出品されていたWRC-X3200GST3だけども、とりあえずRAMで起動して問題ないことがわかったし、Flashも実は問題なさそうだったのでどうにかFlashから起動できるように改造してみた。

といってもFlashの中身が飛んだ状態で売られていたジャンク品なのでPreloaderやubootのバックアップはないし…

ということで他の機種のデータを使えないか試してみた。MT7622搭載デバイスのデータで色々試してみたんだけど、他の機種だと1ddrとかの制約があったのでE8450化してうまくフラッシュから起動することができるようになった。

Linksys E8450のリカバリ方法をそのまま実行すればUBIバージョンのLinksys E8450になることがわかった。

実行したのはLinksys E8450のリカバリのRecovery instructions - Reload OpenWRT 24.10 from scratchのところ。

WRC-X3200GST3の方はmtk_uartbootでE8450のデータでブートするところまでやって、Ctrl+Cで

MT7622> <INTERRUPT>
MT7622> 

のところまでやっておく。あとTFTPでデータを転送するために

setenv ethaddr 00:11:22:33:44:55
setenv eth1addr 00:11:22:33:44:56
setenv serverip 192.168.1.254
setenv ipaddr 192.168.1.1

まで設定を済ませておく。これで本体側の準備はOK

PC側もファイルをダウンロードしてファイル名を変更しておく。
openwrt-mediatek-mt7622-linksys_e8450-ubi-preloader.bin
openwrt-mediatek-mt7622-linksys_e8450-ubi-bl31-uboot.fip
openwrt-mediatek-mt7622-linksys_e8450-ubi-initramfs-recovery.itb
factory.bin

これらのファイルをダウンロードしておく。ダウンロードしたファイル名とリンクのファイル名が違うので、リンクのファイル名に直しておく。

ファイル名を上のリンクどおりに揃えたらTFTPサーバの直下に置いておく。

ubi detach; mtd erase ubi && ubi part ubi
mw $loadaddr 0xff 0x1f000
run boot_tftp_write_bl2
run boot_tftp_write_fip
tftpboot 0x48000000 factory.bin

ここでRAM上に読み込んでいるfactory.binにMACアドレスを書き込む。もしかしたらfactory.binを編集してからTFTPで流し込んでもいいのかも。順番はWAN、LAN、2.4GHz、5GHzなんだけどラベルに貼ってあったMACアドレスがWANらしいのでそれを基準に入れてみた。ラベルのSSIDはWAN-1の値だったのでそこから推測。これをやっておかないとMACアドレスがランダムになってしまう。

mw.b 0x4807FFFA 0x04
mw.b 0x4807FFFB 0xab
mw.b 0x4807FFFC 0x18
mw.b 0x4807FFFD 0xc0
mw.b 0x4807FFFE 0x7c
mw.b 0x4807FFFF 0x24

mw.b 0x4807FFF4 0x04
mw.b 0x4807FFF5 0xab
mw.b 0x4807FFF6 0x18
mw.b 0x4807FFF7 0xc0
mw.b 0x4807FFF8 0x7c
mw.b 0x4807FFF9 0x25

mw.b 0x48000004 0x04
mw.b 0x48000005 0xab
mw.b 0x48000006 0x18
mw.b 0x48000007 0xc0
mw.b 0x48000008 0x7c
mw.b 0x48000009 0x23

mw.b 0x48005004 0x04
mw.b 0x48005005 0xab
mw.b 0x48005006 0x18
mw.b 0x48005007 0xc0
mw.b 0x48005008 0x7c
mw.b 0x48005009 0x22

MACアドレスを書き込んだら念のため呼び出してみる。

md.b 0x4807FFFA 6
md.b 0x4807FFF4 6
md.b 0x48000004 6
md.b 0x48005004 6

うまく書き込めていたらリカバリモードで起動する。

ubi create factory $filesize static && ubi write $loadaddr factory $filesize
run boot_tftp_recovery

これでOpenWRTがリカバリモードで起動するはず。E8450とWRC-X3200GST3のLANポートの割り当てが少し違うので注意。WRC-X3200GST3のWANはE8450でいうLAN1で、WRC-X3200GST3のLAN1はE8450でいうWANになっている。なのでPCをつなぐときはWRC-X3200GST3のLAN2~4かWANに繋いでおかないと繋がらない。とりあえずPCをLAN4に繋いで192.168.1.1に接続。SystemのBack up/Flash Firmwareからopenwrt-25.12.5-mediatek-mt7622-linksys_e8450-ubi-squashfs-sysupgrade.itbにアップデートして完了。

これでSPI Flashにうまく書き込まれてるようで普通に起動するようになった。E8450として起動するのでPower LEDがついていない。2.4GHzのLEDは点灯している。

cat /sys/class/gpio/gpiochip*/base | head -n1

が512だったのでPower LED(緑)がGPIO 49ということなので

echo "561" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio561/direction
echo "1" > /sys/class/gpio/gpio561/value

でPowerを緑色で点灯することが出来た。スタートアップスクリプトにでも入れておこう。

#Power Green
echo "561" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio561/direction
echo "1" > /sys/class/gpio/gpio561/value

#2.4GHz LED
echo "597" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio597/direction
echo "1" > /sys/class/gpio/gpio597/value

#5GHz LED
echo "601" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio601/direction
echo "1" > /sys/class/gpio/gpio601/value

これで起動するとそれなりにLEDが光る。ちなみにResetとWPSボタンのGPIOは同じなのでそのまま動くはず。

とりあえずLAN1をWANに設定して、WANをbr-lanに含める設定をしてみた。

MT7915もちゃんと認識してるし、スキャンも出来てるので使えそう。

シリアルコンソールで見てたらubootの方のMACアドレスが飛んでるのでシリアルコンソールからubootに入ってMACアドレスを設定してみる。カウントダウンが始まったあたりでCtrl+Cを押して、MT7622>ってなったら

setenv -f ethaddr 04:ab:18:c0:7c:24
saveenv

のようにスタンドに書いてあったMACアドレスを入力して保存してみた。これでブートローダー起動時のNo MAC Addressは消えた。

とりあえず文鎮化していたジャンクなWRC-X3200GST3をE8450として蘇らせることが出来たっぽい。LEDの設定とかちゃんとすればそこそこ使えるんじゃないかな。

あとおそらく前オーナが文鎮化させてしまった原因の可能性であるoverlay領域の少なさもE8450化で解決しているような。WRC-X3200GST3のOpenWRTだと8MBぐらいしか無いDisk SpaceもE8450化したことによって86.91MBもあるし。大きなモジュールもインストールできちゃう。

MACアドレスもfactory.bin転送後にラベルと合わせたのでちゃんと認識されている。

とりあえずだいぶ安くゲット出来たジャンク品が普通に使えるようになったので何より。いまのところ問題が出ていないけどGPIOがどこにつながってるかわからないので問題が起きても自己責任で。

1000円未満のジャンクにしてはだいぶ遊べたし勉強になった。12V 1.5AのACアダプタのほうが高い…

2026年7月11日土曜日

起動しないWRC-X3200GST3のFlashを覗いてみる

 この前購入したジャンクのWRC-X3200GST3-Bなんだけど、Flashメモリを剥がす前にとりあえずmtk_uartbootからinitramfs用なOpenWRTを起動できるのでそこからFlashメモリをいじってみることに。フラッシュメモリが壊れたのか、前オーナーがフラッシュメモリ飛ばしてしまったからジャンクとして売り飛ばしただけなのかを確認してみることに。

まずは前回同様に別なモデルのFIPを使ってmtk_uartbootで起動して、TFTPでinitramfsのOpenWRTを流し込む。openwrt-25.12.5-mediatek-mt7622-bananapi_bpi-r64-snand-bl31-uboot.fipでも起動することが出来た。

インターネットに繋ぎたいのでWANにインターネットに繋がってるLANケーブルを接続。

mtd-rwをインストールする。

インストール完了したらSSHで接続し、

insmod /lib/modules/$(uname -r)/mtd-rw.ko i_want_a_brick=1

mtdの書き込みを有効にする。これでdmesgを見てみると

[ 6014.438259] mtd-rw: mtd0: setting writeable flag
[ 6014.493693] mtd-rw: mtd1: setting writeable flag
[ 6014.549047] mtd-rw: mtd2: setting writeable flag
[ 6014.604385] mtd-rw: mtd3: setting writeable flag
[ 6014.659727] mtd-rw: mtd4: setting writeable flag
[ 6014.715091] mtd-rw: mtd7: setting writeable flag
[ 6014.770468] mtd-rw: mtd8: setting writeable flag
[ 6014.825809] mtd-rw: mtd9: setting writeable flag
[ 6014.881170] mtd-rw: mtd10: setting writeable flag

のようにmtdパーティションが書き換え可能になる。

試しに書き換える前になんか入ってるのか確認してみる。

root@OpenWrt:~# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00080000 00020000 "Preloader"
mtd1: 00040000 00020000 "ATF"
mtd2: 00080000 00020000 "u-boot"
mtd3: 00080000 00020000 "u-boot-env"
mtd4: 00100000 00020000 "factory"
mtd5: 00600000 00020000 "kernel"
mtd6: 01300000 00020000 "ubi"
mtd7: 00500000 00020000 "tm_pattern"
mtd8: 00100000 00020000 "tm_key"
mtd9: 00f00000 00020000 "user_data"
mtd10: 04500000 00020000 "reserved"
root@OpenWrt:~# hexdump -C -n 64 /dev/mtd0
00000000  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
*
00000040
root@OpenWrt:~# hexdump -C -n 64 /dev/mtd1
00000000  55 42 49 23 01 00 00 00  00 00 00 00 00 00 00 02  |UBI#............|
00000010  00 00 08 00 00 00 10 00  00 00 00 00 00 00 00 00  |................|
00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000030  00 00 00 00 00 00 00 00  00 00 00 00 40 93 2d 8c  |............@.-.|
00000040
root@OpenWrt:~# hexdump -C -n 64 /dev/mtd2
00000000  55 42 49 23 01 00 00 00  00 00 00 00 00 00 00 01  |UBI#............|
00000010  00 00 08 00 00 00 10 00  00 00 00 00 00 00 00 00  |................|
00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000030  00 00 00 00 00 00 00 00  00 00 00 00 7f 58 53 19  |.............XS.|
00000040
root@OpenWrt:~# hexdump -C -n 64 /dev/mtd3
00000000  55 42 49 23 01 00 00 00  00 00 00 00 00 00 00 01  |UBI#............|
00000010  00 00 08 00 00 00 10 00  00 00 00 00 00 00 00 00  |................|
00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000030  00 00 00 00 00 00 00 00  00 00 00 00 7f 58 53 19  |.............XS.|
00000040
root@OpenWrt:~# hexdump -C -n 64 /dev/mtd4
00000000  55 42 49 23 01 00 00 00  00 00 00 00 00 00 00 01  |UBI#............|
00000010  00 00 08 00 00 00 10 00  00 00 00 00 00 00 00 00  |................|
00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000030  00 00 00 00 00 00 00 00  00 00 00 00 7f 58 53 19  |.............XS.|
00000040
root@OpenWrt:~#

なんかおかしい…
よく確認してみると128KiBごとにUBI#が並んでる。ユーザー容量増やそうとして他のパーティション飛ばしてしまったのでは…

試しに適当なデータを焼いても読めているので、Flashは問題ないかも。

純正のPreloaderとかubootとか持ってないしどうしようかなぁ
RAM上で問題なく起動できるのでもったいない。
どうせフラッシュの中身空っぽなんだし他のデバイスのファームウェアでも焼いてみるか…