Monthly Archives: July 2020

fon2405e hack: SPI フラッシュを換装してOpenWrtをインストールする

かなり前にfon2405eへカスタムファームウェアを入れ替えたことがあるのですが、今回、2MBしかないSPIフラッシュを8MB(MX25L6405D)に置き換えてOpenWrtを入れてみます。このことに思い立ったのは前回、IPカメラにOpenWrtをインストールして、思っていたよりも使い道があったことが理由です。IPカメラのSoCはRT5350FでRT3050系の2世代目にあたり、fon2405e/fon2305eはRT3050Fで1世代目に当たります。それなので機能的にはクロックや機能に多少違いがあるものの基本的に同じなので、fon2405eもOpenWrtを入れれば使い道が出てくるということです。OpenWrtでは4M/32MルータのサポートはV19で終了なので、改造するなら今が最後のチャンスと見てよいでしょう。 OpenWrtのインストール方法 fon2405eにシリアル用のヘッダーピンを立てます。LANポートを上にしてGnd Tx Rx Vccの順です。そしてPCからシリアルアクセス(57600 / 8N1)できるようにします。LANケーブルをPCとfon2405e(PCポート)につなぎます。 fon2405e用のinitramfsのファームウェアをダウンロードしてfonita,imgにリネームしてtftp(tftpd-hpa)サーバのルートディレクトリに置きます。サーバのアドレスを10.10.10.3/24にセットアップします。 WPSボタンを押しながら電源を入れ数秒後、「2」を押してu-boot環境に入ります。タイミングが難しいのでアクセスするまで何度もトライするかもしれません。そのメニューからtftpサーバ(ftpd-hpa)に置いてあるinitramfsイメージをロードしてmtdコマンドでu-bootをアップグレードします。もしくはオリジナルのu-bootでもできるかもしれませんが私は試していません。u-bootは換装後でもアップグレードできます。 次にSPIフラッシュを2GBからu-bootを焼いた4GBもしくは8GBに換装します。4GBのSPIフラッシュは8ピン、8GBは16ピンになります(注:MX25L6406Eは8ピンタイプです)。8ピンの場合はクリップを挟んで焼けますが、16ピンの場合は基盤にハンダ付けしてROMライターにセットします。ROMライターで基盤から取り外したSPIフラッシュのイメージを保存します。エラーが起きやすいので数回行い、md5sum等で正確にコピーできたかチェックします。 SPIフラッシュの焼き方 ファームウェアの焼き方は何通りかあり、u-bootコマンドで直接ROMを焼く方法、OpenWrtのinitramfsをロードしてからsysupgradeでROM版を焼く方法があります。 ファームウェアを自分でビルドする Build OpenWrt gitでOpenWrtのソースをダウンロードしパッチを当ててコンパイルします。 コンパイルに失敗したときはログを出力させて原因を調べます。 Build u-boot ソースに設定変更したパッチを当ててビルドするか自分で設定してビルドします。基本、u-bootの起動に失敗したらSPIフラッシュをROMライターで書き込む以外方法はありません。試してみたところOLinuXinoのu-boot(v4.0)のソースが使えます。u-bootのビルドはUbuntu 12.04.5 32bitを使いました。ソースが古いためディストビューションのバージョンによってはビルドに失敗することもあるようです。 注意: u-bootのパーティションサイズはOpenWrtと同じ標準サイズでサブセット版のオリジナルに比べて大きくなっており、SDKのイメージ、オリジナルのFONのイメージを書き込むと使用不能になります。 kermit u-bootをビルド・インストールできたものの、FirmwareのロードでLZMA解凍に失敗した場合、kermitを使ってシリアル経由で圧縮していないFirmwareを転送する方法を使います。Kermitはビルドがすんなりいってくれそうもなく、当時の最新バージョンではソースを少し変更しました。 kermit-9.0.302.diff 簡単な操作方法 Ctrl+\ :ターミナルから抜ける s <filename> :ファイルを転送する 通信設定 .kermrc WLANのeepromのインストール SPIフラッシュを換装してu-bootとfirmwareをインストールできても、まだWLANが使えない問題があります。原因はWLANのeepromがないためです。そこでRalink SDKで作ったファームウェアを調べてそれを使ってみることにしました。元のFONでもいいのですがアクセスが難しいのでRalink SDKのイメージから/etcにあるeeprom(RT3050_AP_1T1R_V1_0.bin)を取り出しました。OpenWrtのeepromはmtd2に保存してあるようで、同じパーティション構成のIPカメラのeepromでhexdumpで調べて比較してみたところ、先頭がボード番号になっていたので、同じことをRT3050_AP_1T1R_V1_0.binでやってみたました。同じくボード番号(3050)だったので、mtdに書き込めば使えるだろう予想して試したところできることが確認できました。 … Continue reading

Posted in DIY, Linux, OpenWrt | Comments Off on fon2405e hack: SPI フラッシュを換装してOpenWrtをインストールする

NginxのUNIXドメインソケット

このサイトが突然アクセスできなくなったので調べてみたところ、ソケットにアクセスできない現象が発生していました。 nginxが再起動した時に前のソケットが残っていて再接続ができなくなっていました。解決方法は前も同じ現象があった時に、systemdファイルを変更したことがあったので、備忘録用に記事にしました。 /lib/systemd/system/nginx.service サイトは自動的にアップデートする仕様になっているので、システムを変更していると突然使えなくなることがあります。

Posted in Linux | Comments Off on NginxのUNIXドメインソケット

CSR4.0 BTドングルとLinux Kernel 5.7

ArmbianのKernelをアップデートしてBTドングルが使えないとわかった時は安物のBT USBドングルを買ったとことを後悔しました。確かに今まで使えないことはなかったのですが、どうやら純正のCSR製品でないらしくカーネルのアップグレードで使えなくなりました。恐らくかなりこの偽物が出回っているのでいずれは解決するだろうと考えていたので、検索したらパッチがありました。 https://patchwork.kernel.org/patch/11644615/ このパッチを当ててカーネルをビルドしたら使えるようになりました。中国製は安くて便利なのですが偽物が思わぬ不具合を出すときがあります。この偽物CSRドングルはベンダーIDとプロダクトIDが全く同じで気がつきません。同じことがUSBシリアルのch341にも言えます。確かに便利なのですが・・・

Posted in Armbian, Linux | Comments Off on CSR4.0 BTドングルとLinux Kernel 5.7

中国製IPカメラ(SRICAM AP003)にOpenWrtを入れる

かなり以前にアマゾンで買ったIPカメラがあるのですが、中国製ということでどうもファームウェアが信用できない。特に使うこともないのですが、ファームウェアをOpenWrtにしてみました。中を開けてみるとRT5350Fというチップが乗ったモジュールが入ってました。これはRalinkのWifiがrt305xベースでポピュラーなSoCと同等です。それなのでOpenWrtのファームウェアのどれかに当てはまるはずです。 UARTポート まずはシリアルアクセスですが、どうもこのモジュールの基盤にはそれらしきものはありません。そこでこのモジュールに近い情報を集めてみました。 ほぼ基盤のレイアウトが同じでインターフェースのpin数が同じなので、この情報をもとにアクセスしてみました。何通りか試してみたら、UART_TXD2、UART_RXD2、GNDに57600 8N1、3.3Vでアクセスできました。 OpenWrtをSDRAMにロード Ralink製品はたいてい一度SDRAMにOpenWrtをロードしてから、susupgradeコマンド使ってROMに書き込みます。シリアルアクセスができるようになったので、ロードしてみました。 OpenWrtのファームウェアは色々試してみた結果、openwrt-18.06.8-ramips-rt305x-mzk-dp150n-initramfs-kernelがいいようです。このファームウェアをfile.binとリネームして、tftpのルートディレクトリに置きます。起動できたら、openwrt-18.06.8-ramips-rt305x-mzk-dp150n-squashfs-sysupgrade.binをscpで/tmpに転送してsysupgradeコマンドを実行してROMに書き込みます。 あとはOpenWrtの基本設定をすれば完成です。IPカメラなので残りにROMにドライバーを入れれば使えるようになると思われますが、勉強不足なので暇見てアップデートすることにしています。ffmpegで送信したいのですが、容量的にも性能的にも厳しい気がしてますが、どうでしょうか? IP Cameraを認識 OpenWrtが起動できるようになりIP Cameraに挑戦してみました。前回、使ったファームウェアは実は4MB用のモノだったので、openwrt-18.06.8-ramips-rt305x-wt1520-8M-squashfs-sysupgrade.binにしました。このファームウェアはSwitchがこのIP Cameraと同じなので一つのlanポートでWANとLANを分けることができます。 さて、本題でGoogleで検索してもこの型番にあった情報は見当たらなかったので、rt5350のデータシートを見みてヒントを探しました。OpenWrtではUSBのIP Cameraドライバーは結構豊富にあるで、このIP CameraもUSB経由で動いているのだろうと考えました。GPIOでも出力が可能なので、もしそうであればドライバーがないので詰みです。ドライバーが認識できれば/dev/video0というデバイスファイルができます。まず基本のパッケージをインストールします。 この時点ではデバイスファイルは出来ていません。データーシートではこのモジュールはUSB2なのでUSBを使えるようにパッケージを入れました。 USBデバイスを調べてみます。 Alcor Micro Corp.がIP Cameraのようです。デバイスファイルも出来ていました。そこでmjpg-streamerを立ち上げてみます。 Firewallでポート8080を開けてアクセスしてみます。IP/パスワードはデフォルトでoprnwrt/oprnwrtです。 VLCでストリーム再生する場合 スナップショットを撮る場合 録画する場合ですが色々調整したのですが、どうしても早送りになります。 Motion Detection motionパッケージをインストールすると動きを検知できます。motionをつかうにはOpenWrtのバージョンを19.07にあげないといけません。残念ながらこのIPカメラではメモリが不足して動きませんでした。 メッシュネットワーク化 最新のOpenWrtの11s+WPA3のメッシュネットワークに挑戦してみましたが、IFは立ち上がるのですがどうもうまくいきません。WPA2 Enterprise(TLS1.2)のSTAモードもダメなようです。それかWPA2 PersonalでSTAモードで接続するかになります。私のところではWPA2 Enterpriseと11s+WPA3なのでそれは選択外です。そこで以前やっていた11s+tincのメッシュネットワークにしました。11sはEncryption: Noneの設定なら古いSoCでもメッシュ化出来ます。 以上、IP CAMのOpenWrt化でした。 参考 https://openwrt.org/docs/guide-user/hardware/video/webcam https://downloads.openwrt.org/releases/18.06.8/targets/ramips/rt305x/packages/ … Continue reading

Posted in Linux, OpenWrt | Comments Off on 中国製IPカメラ(SRICAM AP003)にOpenWrtを入れる