始めた当時はいろいろ試していましたが、結局FreeBSDで使えるようになったのは AtherosとRalinkだけでした。(2019/1)
Realtekのチップなどはmrubyをベアメタルでのっけて使えるようにしました。 ネットワークも使えるようにしてあるので、結構使えます。(2020/4)
FreeBSD 14Rでmipsは消される事になりました。13Rでclangになって動かなくなって いたので12Rが最後になります。(2022/5)
HardOffで数百円で手に入るので、MIPSを使ったルーターが手元にたくさんある。1990 年くらいに数百万したワークステーションに入っていたCPUよりもクロックは高かったり するから驚きだ。もちろん収集している理由はZRouterでFreeBSD化するためである。 巷ではARMを使ったラズベリーパイが人気だが、10分の1くらいの価格で入手でき気軽に 試せるのと、どうしても裏をいきたい性格なのでいろいろいじっている。
安価で入手できるという事もあるのだが、昔のマシンに比べ消費電力が少なくいろいろ 遊んでもエコなのが良いとも思っている。
初期の無線ルータはARMを使った使った物もあったが2005年以降はMIPS系のSOCがよく 使われるようになったようだ。
2005年は以前はBroadcomがメジャーだったが、それ以降はAtherosもよく使われる ようになったようだ。2011年にAtherosはQualcommに買収されていてBroadcom対 Qualcommの一騎打ちの構図が見える。 Infineon(ADMtek)は無線系が弱かったのであまりシェアーをとれず、RalinkのMIPSは 後発だがnな無線チップをかなり早い時期に投入できたおかげでいろいろなメーカー で使われるようになっている。(2015/04)
一騎打ちをやってると思ったらBroadcomも買収されてしまった。もうなにがなんだか わかりません。(2015/08)
初期のSOCはPCIバスを直接出していたが、現在は必要な機能はすべてチップの中に いれてしまってPCIバスを出しているケースは少ない。
BroadcomとQualcommが戦っている間に、Ralinkが漁父の利を得ているような構図にも 見える。(2015/05)
2000年代前半は東芝やNECもMIPS SOCを作っていたようだが、なぜか現在は作っていな いようだ。 ここに2001年春のMIPSの資料がありました。
5年近くこのネタでいろいろ調べた結果、以下のような結論に至った。また将来 変わるかもしれないがとりあえず。
これらのことからFON2305/2405が最適な対象であることはたぶん当面変わらないと 思われる。
ここにバッファローの無線ルーターのOpenWRT/DD-WRTの情報があった。
メーカー | 機種 | CPU | Flash | DRAM | BOOT | シリアルコンソール | JTAG |
備考 | |||||||
Broadcom | |||||||
NIKON | PD-10 | Broadcom BCM4712(0446) | 2M(SPI) | 8M | CFE | 3.3V 115200 | |
このモジュールを中古カメラ屋で3つ買ってこのMIPSいじりが始まった。 一つは壊してしまい、二つ残っているが、CFEの操作は出来るがネットワークが直接 使えないのでとりあえず、ペンディングになっている。 | |||||||
BUFFALO | WLI3-TX1-G54 | Broadcom BCM4712(0726) | 4M(CFI) | 16M | CFE | 3.3V 115200 | ○ |
ASUS WL-500も類似のSOCを利用してるよう。このモジュールはプラスチックの はめ込みで作られていて、分解すると引っかけの爪が折れたりするので、分解は できるだけしない方が良いと思います。 | |||||||
BUFFALO | WLA2-G54C | Broadcom BCM4712 | 4M | 16M | CFE | ○ | |
WLI3-TX1-G54と中身は同じではないかと思うがまだバラしていない。 | |||||||
Canon | NH-WP100 | Broadcom BCM4712(0706) | 8M | 32M | CFE | ○ | |
USBが付いていたので、Athrosが入っているのかと思ったらBCM4712にPCIなUSBチップ ISP1516が付いていた。シリアルは4ピンのヘッダーではなくて6ピンのヘッダーに なり、2(RX),5(TX),6(GND)となっていた。 | |||||||
Apple | AirMac Expres | Broadcom BCM4712? | |||||
プラスチックを完全に接着して形成されているためばらせません。 | |||||||
BUFFALO | WHR-HP-G54 | Broadcom BCM5352(0740) | 4M(CFI) | 16M | CFE 1.0.37-1.08 | 3.3V 115200 | ○ |
バラした形跡はなかったがUARTのピンヘッダーが付いていた。 | |||||||
BUFFALO | WHR-G54S | Broadcom BCM5352? | 4M(CFI) | 16M | ○ | ||
ヒートシンクがはってあるのでCPUの型番分からず。WLA2-G54Cはネジを使っていない のだが、このモデルはサイドのはめ込みパネルの下に一本ネジを使っている。WHR-Gが 後継になるようだが、こちらはシールの下にネジがあり、コストカットされている ようだ。 | |||||||
BUFFALO | WCA-G | Broadcom BCM5354(0927) | (CFI) | 8M | CFE | 3.3V 115200 | |
ゲーム機用のAirStation。はめ込みで作られているが、底面の一カ所シールの下に ネジがある。PCを使わず設定するために設定キーがあり、HOLTEK HT82K68Eが使われて いる。 | |||||||
BUFFALO | WHR-G | Broadcom BCM5354 | 4M(CFI) | 16M | CFE 1.0.37-1.18 | 3.3V 115200 | ○ |
SOCの上にヒートシンクが貼ってあって製造年が分からない。電源入れているとヒート シンクは暖かくなる。こちらの機種もサイドのシールの下にネジがある。 | |||||||
D-Link | DIR-524 | Broadcom BCM5356(1114) | 2M(SPI) | 16M | CFE 5.10.56.46 | 3.3V 115200 | |
アダプタ無しを108円でHardOffで購入。D-Linkの製品は国内であまり売られて いないので珍しかったので買ってみた。シリアルつないで確認したらCFEで止められ ないし、busyboxも立ち上がっていない。。。後から気がついたがこれ74KなMIPS だった。 | |||||||
Linksys | WAP54G | Broadcom BCM4702(0232) | 4M(CFI) | 16M | ○ | ||
この機種はいろいろなタイプがあって、手元にあるの機種は基板がネットで 見かける物に比べ大きく、またチップの製造年も2002年と思われ初期のバージョン の基板なのかもしれない。LINKSYSのモジュールはDD-WRTなどの初期の代表的な ターゲットだったが、分解も面倒なのであまりいじるきが起きない。 と書いていたが、改めて開けてみたら、メモリ/フラッシュも案外大きくminiPCIが二つ もあり、何かに使えるかもしれない。この機種で使われているBCM4702は初期のBroadcom のMIPS SOCでUARTが外付けになっている。 | |||||||
BUFFALO | WBR-B11 | Broadcom BCM4702(0305) | 4M(CFI) | 16M | ? | ||
このタイプの機種ではPowerPCが使われているものがあって、それを狙って108円で購入 したがMIPSだった。このタイプではSH3やPowerPCやMIPSが使われているようだ。 これよりもちょっと新しいモジュールの ページがあった。 | |||||||
Infineon | |||||||
COREGA | CG-WLBARAGL | Infineon ADM5120(0520) | 2M(CFI) | 4M | ? | 3.3V 115200 | |
ATHEROSのシールが貼ってあったので、ハードオフで108円で買ってきたが、開けて みたらInfineonのチップで吃驚。有線ルータ用のSOCにAtherosのPCI WIFIモジュールを 接続した機種。Broad Net Technology, INC.という会社のローダー が入っていて、システムはLinuxではないようだ。このブートローダーはxmodemで フラッシュのアップデートが出来るみたいだがFlashが2Mなので、かなり厳しい。 このチップはバッファローの有線のルータにも使われていU-Bootを焼いているページ があった。 J4がシリアルなのだがヘッダー無しの4ピンのJ5とヘッダー有りのJ6は用途不明。 このチップは元々ADMtekという会社が作っていたようだが、2004にInfineonに買収さ れたようだ。FreeBSDのmipsサポートの初期のターゲットになっていたようで、Headに ソースがあるが、ZRouterではサポートに入っていない。 | |||||||
BUFFALO | BBR-4HG | Infineon ADM5120(0549) | 2M(CFI) | 8M | ? | 3.3V 115200 | ○ |
ADM5120が使われていて、ネットでいじっている人がいたのでハードオフで108円で購入。 海外だとEdimax BR-6104という製品がADM5120を使っているようだ。 | |||||||
BUFFALO | BBR-4MG | Infineon ADM5120 | 2M(CFI) | 8M | ? | 3.3V 115200 | ○ |
Realtek | |||||||
COREGA | CG-BARMX | Realtek RTL8650 | 1M(CFI) | 4M | ? | ○ | |
Flashも小さいし使い道ないかも。。。 | |||||||
BUFFALO | BBR-4HGV2 | Realtek RTL8196 | 2M(SPI) | 8M | ? | 3.3V 115200 | ○ |
BBR-4HGと同じSOCかと思ったら、なんと違っていた。RTL8196はLexraのRLX4181を 使っているとのことだ。RTL8196はWIFI APにもなるようだが、無線のチップを搭載 していない。このチップは案外新しいのだがR3000系だ。しかしMIPS16をサポートして いるようだ。ブートログ | |||||||
PLANEX | MZK-MF300N | Realtek RTL8196 | 4M(SPI) | 8M | ? | 3.3V 38400 | ○ |
ACジャックの下のリセットボタンを押しながら、電源を入れるとブートローダーに 落とせる。これも不明なブートローダーだがおそらく RealTekが提供しているSDKに含まれている物ではなだろうか。 このモジュールはUSBコネクタのパターンはあるが実装されてない。抵抗とコネクタ 付ければ使えるのではないかな。 | |||||||
Logitec | LAN-W300N/R | Realtek RTL8196 | 4M(SPI) | 16M | ? | ||
IO DATA | ETG2-DR | Realtek RTL8198 | 4M(SPI) | 32M | ? | 3.3V 38400 | ○ |
有線のルーターでUSBポートがあったので、買ってきてみた。不明なブートで機能も ないみたいなんで、ブートから作らないとダメかも。 | |||||||
Atheros | |||||||
NEC | WL54TE | Atheros AR2313 | 4M(CFI) | 8M | vxWorks BSP | 3.3V 9600bps | |
Atherosなチップが使われているようなので、ACアダプタ無しを108円でHardOffで 購入。この機種は部品の劣化で発熱しメーカー交換がおこなわれたようだが、購入した 物はとくにプラスチックの変色などは見かけられない。シリアルをつないで確認した ところvxWorksが入っている模様。。。シールドの中にはAR2112が入っているのでは ないかと思われる。Atherosはチップ単体としては2313という型番で、周辺チップを 含んだ型番が5313となってるような気がする。 JTAGのパターンは見当たらない。 BroadcomのvxWorksを焼き直す方法が、 ここにあった。 Atherosでも応用できるかな。。。 AR5312+VxWorks BSP+netbsdの資料。 | |||||||
NEC | WR6670S | Atheros AR2313(0737) | 4M(CFI) MX29LV320CTTC | 16M M12L128324A | |||
不明のブートの上にファームも全くログを吐いていない。ブートから作らないと だめかも。 RedBoot焼いてみた。 | |||||||
FON | FON2100E | Atheros AR5315 | 8M(SPI) | 16M | RedBoot | 3.3V 9600bps | ○ |
実家に帰った時にHardOffで見つけたので確認用に540円で買ってみた。FTの モジュールをTX,RX,GNDを接続して起動するとなぜか起動しない。RXとGNDだけにすると RedBoot/Linuxが起動して、その後にTXを接続してコマンドでrebootすると今度は ちゃんと起動できて、RedBootで^Cで止める事も出来る。Atherosも2004年くらいはARM からライセンスを受けたようだが、その後MIPS系にシフトした模様。 おそらく同じモジュールでVxWorksなルーターの HACKネタがあった。 | |||||||
FON | FON2201 | Atheros AR2315 | 8M(SPI) | 16M | RedBoot | 3.3V 9600bps | ○ |
ハードオフで324円で購入。 ZRouterでは唯一Ubiquiti/RSがAR7系でRedBootを使っているようでビルドすると 5Mくらいでおさまるので、ちょっと試している。 UrJTAGで見てみた。AtherosのチップはAR2315 とAR5315は同じ物だと思うのだが、どのような使い分けになってるのだろう。 | |||||||
IO-DATA | WN-G54/R3 | Atheros AR5315 | 2M(SPI) | 8M | ? | ○ | |
FON2100Eも同じチップを使ってるっぽい。 AtherosのチップはBroadcomのチップに比べ情報が少ないが KIIDAX さんが調べられています。Atherosは2011年にQualcommに買収された。 元々Atherosはデータシートを公開していなかったようだが、スペックシートやGPLで 公開されたソースから情報を取得しているようだ。 ヒートシンクの下のSwitchはMarvellの88E6060と思われる。 | |||||||
COREGA | CG-WLBARGPX | Atheros AR2317(0726) | 4M(SPI) | 16M | RedBoot | 3.3V 9600 | |
STのFlashでSWITCHはIP175Cが使われいる。何故かRedBootからのネットワークアクセスが 遅い。 | |||||||
NETGEAR | WGR614C v7 | Atheros AR2317(0611) | 2M(SPI) | 8M | 3.3V | ||
SWITCHにamd6996が使われています。AR231xはいろいろなSwitchが付いたモデルが あります。 | |||||||
NEC | WR4100N | Atheros AR7240(1017) | |||||
二つ手に入れたが一つは電源投入後起動しない事がある。シリアルのピッチが狭く ピンが無い物もある。 | |||||||
BUFFALO | WHR-HP-G300N | Atheros AR7240(1134) | 4M(SPI) | 32M | U-Boot | 3.3V 115200bps | ○ |
AR7系の確認がしたかったのでアダプタなしのジャンクが540円と高かったが購入 してみた。BUFFALOさんはなぜにこれだけいろいろなSOCを使っているのかな。。。 U-Bootはコントロール+Cで止められるが、ログがすごい勢いででてタイミングが 分かりにくい。ZRouterでビルドしたカーネルのログ。 | |||||||
NEC | WR8100 | Atheros AR9130 | 4M(CFI) | 32M | ? | 3.3V 9600 | |
SwitchがMarvelの6065付いている。入手した物は全く起動せず、壊れていた。 | |||||||
NEC | WR8500 | Atheros AR9132(0829) | 4M(CFI) | 32M | ? | 3.3V 9600 | |
Bootは不明だがなんとNetBSDが入っていた。 | |||||||
BUFFALO | WZR-HP-G300NH | Atheros AR9132 | 32M(CFI) | 64M(DDR) | U-Boot | 3.3V 115200bps | ○ |
アダプタ無しを324円でハードオフで購入。アダプタは12Vで手持ちが使えた チップの上に放熱シートが貼ってあって、チップの型番が確認できていない。 こちらはGigaのスイッチにRTL8366SRを使っているようだ。このモデルは スイッチにG301NHと同じRTL8366RBを使った物がある。 | |||||||
BUFFALO | WZR-HP-G301NH | Atheros AR9132 | 32M(CFI) | 64M(DDR) | U-Boot | 3.3V 115200bps | ○ |
このモデルの基板にはSDカードのソケットがありSPIの4本とプロテクトのGPIO 1本が 接続されているようなパターンがあるが、調べてみたが機能しないようです。 AR9132 rev 2にはSPIのロジックが入っていないような気がします。ひょっとすると 入ったチップもあったがCFIなFlashを使っていてSPI未使用なケースは入ってない チップに置き換えられたのかもしれません。ひょっとするとSPIではなくてGPIOなの かもしれませんが調べてません。 | |||||||
BUFFALO | WZR-600DHP | Atheros AR7161 | U-Boot | 3.3V 115200bps | ○ | ||
スイッチはAR8316。このタイプの筐体は二種類あってゴム足が出っ張っているものと ぺったりしたものがある。ネジもぺったりしている方が小さくて出っ張っている方は 大きい。ACアダプタも特殊形状のコネクタと通常形状のものがある。 | |||||||
BUFFALO | WZR-HP-G302H | Atheros AR7242(1129) | 16Mx2(SPI) | 64M(DDR2) | ○ | ||
アダプタ無しを324円でハードオフで購入。アダプタは12Vで手持ちが使えた WZR-HP-G300NHと同じタイプのアンテナなのだが、付け根の強度が弱くハードオフで 買ってきた両方とも壊れていた。おそらくデザインとコストを削るために、作り込ん だのだろうが、普通のアンテナにした方が良かったのではないだろうか。 GigaのスイッチにAR8316を使っている。SOCよりもこちらの方が大きい。 シリアルコンソールをつないだが信号が確認できない。オシロで見ても波形が確認できず、 そもそもHiが2.6Vな気がする。 | |||||||
Ralink | |||||||
COREGA | CG-WLBARGNS | Ralink RT2780F(0817) | 4M(CFI) | 16M(K4S641632K×2) | U-Boot | 3.3V 57600bps | ○ |
おそらくRT2880Fと同形の一世代目のRalink MIPS SOCと思われる。WRTR-226GNのOEM と思われる。 | |||||||
FON | FON2305E | Ralink RT3050F(0947) | 2M(SPI) | 32M | U-Boot | 3.3V 57600bps | ○ |
D-LinkのDAP-1350もRalinkのチップを使ってる模様。CFIのFlashを実装する パターンとUSBのパターン有り。シリアルのヘッダーの穴がFON2405Eにはないが こちらにはあるので、実験にはこちらの方が良いかも。Ralinkも2011年にMediaTek に買収されている。BroadcomもAtherosもデーターシートがネット上に存在しないが、 Ralinkは見つける事が出来た。Ralinkは2007年くらいにはRT1310というARM系のSOC を製造していたようだが、その後MIPS系に鞍替えした模様。 RT1310は5V Technologiesの5VT1310のOEMだったのでは無いかと思われる。 RalinkはRT3050の前にRT2880というMIPS系のチップを作っていたようで、RT2880 はWIFIやEtherが別チップになっていたが、RT3050ではすべて1チップに詰め込んだ ようだ。 | |||||||
FON | FON2405E | Ralink RT3050F(1016) | 2M(SPI) | 32M | U-Boot | 3.3V 57600bps | |
PLANEX | MZK-WNH | Ralink RT3050F(0942) | 4M(CFI) | 16M | U-Boot | 3.3V 57600bps | |
RT3050でCFIを使っているので確認用にHardOffでACアダプタ無しを108円で購入。 秋葉でも前に見かけたが、最近はあまり見かけず、先日一つ見つけたが900円くらい で高価だった買わずにいた。アダプタは12V 1Aセンター+が使えるようだ。ずいぶん ケースがよこれていて、開けてみたら中も埃だらけだった。PLANEXのこのタイプの ケースははめ込みだが、バラしたはずみで、全面の爪が引っかかってる部分が割れて しまった。JTAGのパターンはない。 MZK-W300NH2という機種は同じ基板でメモリが倍で、RFも2つとなっているようだ。 チップにはRT3050FとプリントしてあるがFreeBSDを起動してみたところCHIP_IDは RT3052であった。なんだかな。。。 BOOT_FROMはb00 : boot from external 16-bit flashだった。FONがメモリ/フラッシュ ともに倍になっているので、あまり利用価値はないが、GPIOが8(9かも)でていることと Etherが5ポートあるので、なにかに使えるかもしれない。 この機種は基板が二種類あって、一つの方にはUSBのパターンがある模様。 | |||||||
COREGA | CG-WLR300N | Ralink RT3052F(0842) | 8M(CFI) | 32M | U-Boot | 3.3V 57600bps | |
324円でHardoffで購入。開けてみたらRT3052がシールドの中にあった。ACアダプタ コネクタ付近のコンデンサー TEAPO製 470uF 10V (C638, C662) が膨らんでいたので、不安定になったので手放したものかもしれない。とりあえず秋月 で470uF 16Vを一個10円で購入して交換してみた。ネットで検索しても故障の情報が ちらほらある。USBコネクタもついていてフラッシュとメモリも大きくシリアルパターン もあり、壊れた物を安く入手できれば良いターゲットかも。10度以下の寒い時期に 起動するると立ち上がらない事がある。そのまま通電して放置して電源を入れなおすと 上がったりする。暖かくなると再現しなくなる。 | |||||||
COREGA | CG-WLR300GNV | Ralink RT3052F(1047) | 8M(CFI) | 64M | U-Boot | 3.3V 57600bps | |
このモジュールはREALTEKのスイッチのRTL8366RBを使っている。RT3052にも スイッチは入ってるのだが、100MのスイッチでGigaにするために使っているようだ。 そのおかげで、ずいぶん基板が大きくなっている。 試しにカーネルを起動してみようかと思ったが、"rtl8366rb_initChip() failed!" とでてネットワークが認識されてなさげだ。どうしてだろう。。。昔懐かしいkermitも 使えるようだが、さすがにシリアルは遅いのでEtherでどうにかしたい。 このモジュールはBelkin F5D8235-4と似た構成のようだ。どちらもGemtekのOEMのようだ。 一次的U-Bootからネットワークが使えたので、FreeBSDを焼いてみたいが、またネット が使えなくなった。症状はU-BootとFreeBSDともにINパケットはSOCに到達している のだが、SOCからのOUTパケットが出て行かないようだ。どうもなんらかの故障のようだ。 | |||||||
BUFFALO | WHR-G300N | Ralink RT3052F(0941) | 4M(CFI) | 32M | U-Boot | 3.3V 57600bps | |
ハードオフで540円と高価だったが、このタイプのモジュールは手元に無かったので 購入してみた。 | |||||||
NEC | |||||||
I/O Data | WN-AG/BBR | NEC VR4131(0332) | 1Mx2(CFI) | 8M | ○ | ||
IDTのチップかと思って購入したらNECの古いチップだった。このチップはUARTが外付け のようで、U4/NA1がそのためのパターンと思われるが実装されていないので、手が 付けられない。無線はmini PCIのAR5212が使われている。 | |||||||
ZyDAS | |||||||
Buffalo | BLR3-TX4L | ZD2001 | 2M(CFI) | 8M | |||
チップの上にヒートシンクが乗っていて型番が確認できないが こちらの情報から MIPS R3000系のZD2001とのこと。当初TX49かと勘違いしていた。 ZD2001はWavePlusのOEMの模様。おそらくWP32xxなのだと思うがWP3200やWP3206とは 別のような気がする。 実装されているチップは2002年後半の製造。 このモデルはかなり後になって、ネット側から設定が変えられる脆弱性が 報告 されていた。 | |||||||
BRECIS | |||||||
COREGA | WLBAR-54GT | MSP2007? | |||||
FreeBSDのサポートはないが、アンテナの折れた物を324円でコレクションしてみた。 MSP200xはMMUが無いタイプの用でFreeBSDは起動できないと思う。 |
こちらを 参考にgitの追っかけを図にしてみた。
以下のコマンドで準備する。この操作は一度で大丈夫です。
% git remote add upstream https://github.com/freebsd/freebsd.git
1で本家とローカルのmasterを同期させる。masterに自分の修正を入れていなければ この操作でコンフリクトが発生する事はありません。と書いたのですが、なぜか コンフリクトが発生する事があります。とりあえず下の手順でファイルを確認して 戻して、ファイルをgithubからcurlでコピーして、commitしてもう一度mergeします。
% git checkout master % git fetch upstream % git merge upstream/master
2で自分のリモートmasterを更新する。
% git push
3でブランチを更新する。この操作では自分が修正したファイルがmasterでも修正されて しまうと、コンフリクトしますのでこつこつ調整してください。
% git checkout mybranch % git merge master
私はgitのコンフリクトのファイルを修正するのがあまり好きでないので、 コンフリクトしたファイルを確認して、いったん戻してコンフリクトしたファイルを masterからひっぱって、mergeしたあとにコンフリクトしたファイルを調整するように しています。
% git status -s | grep ^UU % git reset --hard HEAD % git checkout master -- hogehoge.c % git commit -a -m "back to master" % git merge master
4で自分のリモートブランチを更新する。
% git push
headが12になって11を追いかけるときは以下のようにする。
分岐したBETAはheadからmargeされるので、masterを追いかけていればBETAを追い かけていることになる。
% git merge upstream/stable/11
リモートのmasterをマージするときは以下のようにします。
% git fetch % git merge origin/master