honeylab's blog

各種ハードウェアの改造、主にファミコンミニなどをやってます(ました)

ドンキの見守りWiFiカメラ「スマモッチャ-」を発売直後に分解してハックする(準備)

はい、スルーする予定だったんだけど、誰かがTwitter

なんのSoC入ってるんだろう、って言ったのを見ていてもたってもいられなくなって

発売直後に買ってきて(正確には勢い余って前日深夜に確認しに行って、翌朝発売であることを確認した)

www.gizmodo.jp

 

その直後に駐車場で分解して納得して、

色々調べた後ようやくシリアルコンソールログを確認したところです。 

メイン基板の裏表

f:id:honeylab:20190503233144p:plain f:id:honeylab:20190503233217p:plain

 

各部の説明はこんな感じ

 

f:id:honeylab:20190506001410p:plain f:id:honeylab:20190504231327p:plain

 

 SoCはGOKEとかいうところのGK7102っていうやつ。

ARM系。なのでu-bootが入っていると期待される。

 FLASHはSPI接続のGD25Q128。8MByte。

 さっそくu-bootのログ

https://bitbucket.org/!api/2.0/snippets/bakueikozo/7eGyeK/2e406a886913a2b21f17ccbc673ab64101233b5e/files/u-boot%E3%83%86%E3%82%B9%E3%83%88

 

Linuxの起動ログ

https://bitbucket.org/!api/2.0/snippets/bakueikozo/7eGyeK/2e406a886913a2b21f17ccbc673ab64101233b5e/files/%E9%80%9A%E5%B8%B8%E8%B5%B7%E5%8B%95

電源投入後、u-boot実行イメージがSPI FLASHから読み込まれ、
続いて、 Linuxカーネルを読み込んで実行する。

u-bootのコマンドラインはこれ

bootargs=console=ttySGK0,115200 mem=36M rootfstype=squashfs root=/dev/mtdblock2 init=linuxrc mtdparts=gk_flash:320K(U),1664K(K),1152K(R),2560K(A),-(H)
bootcmd=sf probe;sf read 0xc1000000 0x50000 0x1A0000;bootm 0xc1000000;

 

CPU情報はこれ。

[ 0.000000] Booting Linux on physical CPU 0
[ 0.000000] Linux version 3.4.43-gk (root@localhost.localdomain) (gcc version 4.6.1 (crosstool-NG 1.18.0) ) #71 PREEMPT Fri Nov 10 15:20:07 CST 2017
[ 0.000000] CPU: ARMv6-compatible processor [410fb767] revision 7 (ARMv7), cr=00c5387d
[ 0.000000] CPU: VIPT aliasing data cache, VIPT aliasing instruction cache

 

[ 0.020000] Calibrating delay loop... 597.60 BogoMIPS (lpj=2988032)

 

u-boot、Linuxが起動して、p2pcamっていうアプリがクラウドとの通信を行う。

基板上に載ってるRTL8188のWiFi基板はSoCとUSBで接続されてる。

[ 8.550000] usbcore: registered new interface driver rtl8188fu

u-bootの時点でSPI FlashもMMCも生きてるのでMMCから起動とかもできそう。
SPI剥がさなきゃかな?とか思ってたけど全然そんな必要ないわ。

 

######Get Hardware Info: model:CloudCam, firmware-ident:eyeplus_ipc_gk_005

っていうのがベースのハードウェアなのかな。

イメージセンサは GC2033

[ 0.170000] [GPIO CFG] IR CUT1 (44)
[ 0.170000] [GPIO CFG] IR CUT2 (39)

IRカットって電子制御なの?昼間切っとけば透けるんじゃね?(何が)

 

https://www.gcoreinc.com/product/showproduct.php?lang=cn&id=107

Flashパーティション分け

[ 0.610000] gk_flash gk_flash.0: GD25Q64C (8192 Kbytes)
[ 0.620000] 5 cmdlinepart partitions found on MTD device gk_flash
[ 0.620000] Creating 5 MTD partitions on "gk_flash":
[ 0.630000] 0x000000000000-0x000000050000 : "U"
[ 0.640000] 0x000000050000-0x0000001f0000 : "K"
[ 0.640000] 0x0000001f0000-0x000000310000 : "R"
[ 0.650000] 0x000000310000-0x000000590000 : "A"
[ 0.660000] 0x000000590000-0x000000800000 : "H"

U-boot,Kernel,あとはなんだろ。

 

っていうか、このSoC使われまくっててすごい解析・ハックされてるわ。
このカスタムイメージ書くだけで色々できそう。

さて、続きはGW開けてからです…とりあえず最速分解は達成できたかな…

 

続きはこちら

honeylab.hatenablog.jp

 

 

技術書典6お疲れ様でした

4/14に開催された技術書典6に参加してきました。
真面目な話、即売会に出店側というのは初めてだったので到着直後からテンパっていたのですが、どうにか無事撤収することができました。

感想としては、えぇぇこんなに売れるの、というのがあるのですが、
サークルチェック数に胡座をかいて呼び込みを端折ると売れないんだ!というのが大きな気づきでした。

販売チャンスをずいぶん逃してしまったようでもったいないことをしたな、というのが大きいです。
場所のこともあるのですが、とにかく人の流れが大きくなっちゃうとサークルが存在していることさえ気づかれないんですね。
昼過ぎの1時間ぐらい全く人が寄らない地獄みたいな気分を味わったのですが、周囲を偵察に行った売り子(嫁)に言われて本を掲げているだけで全然人の目線が変わって多くの人が立ち読みしてくれるようになりました。

チェック済みでパパっと買っていってくれる方がいるのもうれしいですが、目の前で中身を確認したうえでお金を払ってくれる、というのはそれはそれで安心感がありましたw

結果、サークルチェック数170に対して持ち込み150、現地頒布数120という爆死とはいかないまでも中破程度の実績となりました。
お立ち寄り、お買い上げいただいた皆様ありがとうございました。

初回参加、初製本でこれだけ反応があるとさすがにモチベーションに直結しますね。
今後とも日々の工作活動をこの形で出していくことができればいいなと思っています。

 

さて、残った在庫をBOOTHに出しておきましたが、在庫数はそれほど多くありません。

honeylab.booth.pm

もしよろしければこの機会に読んでいただければ今後の開発の励みになります。

 

さて、4/14当日、我々のまだ制御の効かない1歳9か月の息子をどうしようかと検討していた結果、現地近くの一時預かり保育に行ってもらっていました。

色々調べた結果、サンシャインから徒歩圏内の愛嬰幼保学園が便利そう、ということで予約をしていました。

「インターナショナル」な保育園、ということも気になっていました。

www.aieiyoho.com

問い合わせ・予約がメールフォームで行え、返信も非常に早かったです。

当日、準備にもたついて到着が遅くなりそうだったため電話連絡をしてみると

…うん?独特のイントネーション…中国?

まぁインターナショナルだし、そういうスタッフも居るよね…

と思って到着。サンシャインから徒歩とはいえ、時間も押しているしわざわざ歩かせる必要もないので目の前のコインパーキングに止めました

なるほどビルの3階。都会的なやつだ。

こんにちはー

あ、さっきの中国人の方かな。
「はじめて?この紙読んで?登録するよ」ざっくりのやつだ。
…お、もうひとりも中国人かな。多いなw

そして気づく。インターナショナル!!!物は言いよう!!(ただの感想です)
息子はというと、さっさと中に入れろ、遊ばせろ、といっているのでさっさと登録して中に入ってもらい、サンシャインに向かいました。


ここ、持ち込みおむつ・おやつ・弁当不要(給食がある)で最低限着替えだけ持っていけばさっと預けられるようになっていてすごい便利でした。
実はこの前の週まで一度も外部の預かりを利用したことがなく、少しでも慣らせればと自宅近くで3時間初めて預けてみたのですが、何のこともなくケロッとしていたので大丈夫かなと思っていたのですが、実際9時から17時まで8時間預けても何でもなかったようでした。(流石に迎えに行ったらニコッとしてくれたが)

お迎えのときは別の(中国人男性)が対応だったのですが、(初回は1万円先払い)精算をさっと済ませて終わり、とあっさり。
一応どうだったか聞いてみたらずっとニコニコして一度も泣かなかった、といっていました。

まぁ、家でも泣くことなんてないんだけどこの子。

 

というわけで、いろいろ所見でびっくりすることもありましたが、そういうところを気にしない方、むしろ給食対応とか預けやすいので池袋でなにかあるときにはまたここを利用しようかな、と思っているところです。

あと、前日に車が壊れたのが痛かった…レンタカー代…

最後にもう一度、

BOOTHで販売中です!

honeylab.booth.pm

レトロアーケード PAC-MANを解析する

というわけで、近所のトイザらスで買ってきました。 

一応前から出ていることは知っていたのですが、ちょっと忙しいので見ないふりをしていたレトロアーケード(MICRO PLAYER RETRO ARCADE) PAC-MAN を解析してみました。

実はすでにある程度解析されていて、同一基板、同一FLASHのものをジャンパ設定で5種類のゲームに切り替えられる、というところまではわかっていたようです。

gorigo.exblog.jp

で、どうも内蔵しているゲームがファミコン版(をベースにしたもの)であるため、中身はファミコンだ、などと言われていたのですが、技術的に考えると、中身はファミコンじゃないんですよ。

("ファミコン"はCPUとかSRAMとかVPUとかで構成されているわけで、樹脂モールドされた中にそれがそのまま入っているわけではなく、また表示もNTSCではなくTFT液晶になっています。つまり、これはファミコンではないのです)

そのため、私は実はファミコン版からこの機器用のCPUに移植かなにかしたものが入っていて、ゲームの差し替えなんて全然望めないものである可能性もあり、それを確認するためにどうしても分解して確認する必要があったのです。

 

 

早速分解してみます。先駆者がいるため簡単に分解できました。

f:id:honeylab:20190423101839p:plain


初期ロットはジャンパ部分がむき出しで簡単にROMを切り替えてプレイできたようですが、対策版としてエポキシモールドされてしまっています。

ROMはGD25Q80C、Quad SPI Flashであることが事前にわかっていました。

f:id:honeylab:20190423183620p:plain


時々SPI Flashを読むためにArduinoでリーダを作ったりしていましたが、それが主目的ではないため、今回はAmazonでぽちっと中華リーダ・ライタを買ってみました。

f:id:honeylab:20190423102251p:plain

さて、肝心のSPI Flash、基板につけたままでは読み書きに問題が出る可能性がありますのでいったん取り外します。樹脂モールドがSPI Flashにもかかってしまっているので超音波カッターで基板を傷つけないように削っていきます。

一旦はんだを盛り、吸い取り線でFlashを剥がします。

f:id:honeylab:20190423162801p:plain

汚い!が、問題なし。

 

今回買ったFlashリーダ、親切にも変換基板が2枚もついていました。大変親切!

f:id:honeylab:20190423183031p:plain

変換基板に乗せます。

f:id:honeylab:20190423191356p:plain

リーダのドライバが署名なしのため、bcdeditでWindowsをテストモードにしてドライバを入れ、読み出しソフトを起動し、パラメータを合わせてREADします。

 

読めた!!!!

 

うーん、いきなりBANK0 っていう文字が見えてるけど、これが本体のファームに絡むものなのか、ゲームデータに絡むものなのかわからないな。

とりあえず全文検索NESヘッダを探してみるものの、見つからない。
NES形式ではないのか。とりあえずもうちょっと見てみよう。

COPYRIGHTの文字が見える。生ROMなんだろうか。

じゃぁ本来の生ROMと目コンペアしてみよう…

 

あ、一致するわ。これほんとにファミコン版のROMのバイナリパッチだ。

まじか。

というわけで、NESヘッダがないので非常に見つけにくいんだけど、
既存のROMとの比較で大体の存在位置を確認したのでそれを張っておく。

DIP ROM # hex offset hex size  
0 0 0 40000 ローリングサンダー
1 1 40000 8000 パックマン
2 2 48000 4000 マッピー
3 3 4C000 8000 ディグダグ
4 4 54000 6000 ギャラガ
5 5 5A000 6000 ギャラクシアン

FLASH全体で1MByte(8MBit)だけど、後半512KはFFだったので見てないと思う。
どっかにROMのオフセット表があると思うんだけどまだ見つからない。

そして、吸い出したROMにNESヘッダを付けてエミュレータに読み込ませてみたら

動いたwwww

 

さて、あとはROMを上書きして動かせるかどうかだな…
チェックサムを見てるかどうかとかを見るために一バイトだけ書き換えたりして試してみようかな。

 

 

 

プレステクラシックのカーネルの書き換え方

プレステクラシックのBOOTIMG1,BOOTIMG2パーティションに収められているのはfitImage形式のブートイメージです。

これは、カーネルのバイナリ(ImageやzImage)と、ハードウェア定義であるDTBファイルを収めたものです。

カーネルを書き換えるには新たにfitImage形式のファイルを作り、BOOTIMG1に上書きしてやればいいです。

ただし、失敗するとちょっとやな感じなので、まず確実にもともとのBOOTIMG1のバックアップを取りましょう。

USB経由のスクリプトでも、シリアル経由でUSBメモリに保存してもいいですが、以下の方法でファイルを作り、大事に保存してください。

ただし、私の解釈ではこのファイルはGPLであり、著作権問題は発生しないと思っています。そのため、万が一忘れていたら、誰かにもらってもいいものだと思っています。

さて、どうにかしてシェルにログインします。一度前面USBをポートを使ってBleemSyncをインストールしている場合、BleemSyncのtelnetが簡単ですが、今後カーネルの書き換えやOTG化をした場合、自力で復活を試みれるように、生のシリアル経由で作業する方法も覚えておいたほうがいいと思います。

生のシリアル経由では、dmesgの出力が延々とでて邪魔なことがありますが、心の目で root [enter] でログインし、dmesg -n 1 をタイプすると黙らせることができます。

まずはバックアップです。

以下のコマンドを実行します。USBメモリは /media にマウントされているとします。

  • dd if=/dev/disk/by-partlabel/BOOTIMG1 of=/media/BOOTIMG1_ORIGINAL

root@bleemsync:~# dd if=/dev/disk/by-partlabel/BOOTIMG1 of=/media/BOOTIMG1_ORIGINAL


16384+0 records in
16384+0 records out
8388608 bytes (8.4 MB) copied, 0.191073 s, 43.9 MB/s

 BOOTIMG1 の代わりに /dev/mmcblk0p1 でもいいですが、番号だと間違えやすいです。/dev/disk/by- で[tab]を押して補完しながらやりましょう。

 

さて、カーネルファイルを準備します。

OTG対応、キーボード・マウス無視の、無効化、一部のUSB-Ethernet変換器のドライバを含めたカーネルをここに置きます。

 

www.dropbox.com

 

このカーネルを下のどちらかの方法で焼きます。

  • fastboot経由

本体を開け、fastboot用のパッドをショートしながら背面USBを接続し、fastbootモードに入ります。ホストPC用のfastbootやドライバはどこからか探してきてください。

fastboot flash BOOTIMG1

で書き込みます。パッドを戻し、電源を再接続します。

 

dd if=/media/otg_kernel.image of=/dev/disk/by-partlabel/BOOTIMG1

でOKです。再起動すると新しいカーネルで起動します。

前面USBをポートには何も影響がありませんので、BleemSyncかなにかが動いてる状態で以下のファイルを確認し、正常に書き込めているか確認します。

もしだめな場合、もう一度やり直しましょう。

 

万が一文鎮化してしまった場合

上記の「fastbootで書き込む方法」に準じ、fastbootに入ります。

fastboot flash BOOTIMG1 <BOOTIMG1_ORIGINALのフルパス>

で元のファイルを書き込みます。

 

正常にカーネルが更新されれば、以下の機能が追加されます。

  • キーボードの有効化
  • マウスの有効化
  • 背面USBのOTG(host)対応

ただし、OTGポートをhostとして動作させるには若干の工夫が必要です。

host/deviceの切り替えは以下のコマンドで実行できます。

  •  echo host > /sys/devices/platform/mt_usb/swmode
  •  echo device > /sys/devices/platform/mt_usb/swmode

起動後にうまいこと実行できるよう、起動スクリプトなどに以下の文を追加するといいでしょう。

私は、/usr/bin/start_pman の中に

if [ "$CHG_INFO" -eq "3" ]; then
echo change to hostmode
echo idle > /sys/devices/platform/mt_usb/swmode
sleep 1
echo host > /sys/devices/platform/mt_usb/swmode
sleep 1
fi

が入るようにしました。ちなみに

CHG_INFO=$(cat /sys/module/musb_hdrc/parameters/charger_info)

の値は、通常のUSB-DATAケーブルを使っている場合1が、OTGスプリッタケーブルの場合3が入るようです。これで見分ければいいと思います。

用途によって、どちらか固定でいい場合があると思います。BleemSyncはWebUIを使う関係でDEVICEになる必要がありますが、そのほかのツールで外部USBメモリを差し込めば使えるような場合はHOSTに固定してしまってもいいかもしれません。

 

おまけですが、USB-Ethernetのドライバを含めてあります。

dmesgを確認して、ifconfig eth0 up をすることでUSB-LAN変換が有効になります。

systemd-networkはインストールされていないので、その類の設定方法は使えません。ifconfig で IPアドレスを指定するか、busybox に含まれている udhcpc アプレットIPアドレスを取得します。

USB-LANが有効になれば、telnetftpがRNDISと同じように使えるはずです。

自動スタートアップとしてどっかに置いておくといいと思います。

 

OTGを有効にしていろいろ動かしているデモがこちらです。

 

youtu.be

 

あくまでも、これはOTGに対応したカーネル、というだけなので、OTGを使っていろいろなことを実現するには追加でユーザランドを調整する必要があります。

まぁLinux使えるならいろいろできるでしょう。

OTG機能を使わなくても、マウスとキーボードがちゃんと使えるようになっているので

dosboxやneko projectとかが快適に遊べるようになるんじゃないでしょうか。

(キーボードのESCなどがRetroArchのUIにハンドルされないようにするにはScrollLock(デフォルトのバインド)を押すといいようです。F11でUIのマウスポインタが消えます)

 

こういったカーネル書き換えの方法やプレステクラシックの回路図なんかを載せた同人誌を 4/14 技術書典6 にて頒布します。

f:id:honeylab:20190412160640p:plain

プレイステーションクラシック魔改造日誌」本文白黒 68p ¥1000円

関係者の方は声かけてください 献本しますw

techbookfest.org

4月14日(日) 技術書展 #6 @ 池袋 に出ます

ブログやツイッターで書いていた記事や技術情報をまとめた本になります

こんなにまとめて書くの久しぶりなのでページ数の割に安くしときますたぶん

下のリンク先にサンプルページもあるのでご参考に…

 

techbookfest.org

 

現在のところ、電子化の予定はありません

気合い入れて余るぐらいするつもりではいますが…

 (刷った本が余ったら物理通販の予定です(時代錯誤感))

息子を預けるか引き連れての参加のため、早めに撤収する可能性があります。

 

日時 2019/04/14 (日) 11:00〜17:00
場所 池袋サンシャインシティ2F 展示ホールD(文化会館ビル2F)
主催 TechBooster/達人出版会
一般参加は11時~13時のみ有料

 

イベント詳細は以下のリンクからご確認ください。

techbookfest.org

"TrueBlue Mini Crackhead pack"が届きました

"TrueBlue Mini Crackhead pack"が届きました。

技術的には可能なんだけど、これをほんとに販売する気?と思いつつオーダーして約1カ月。 

100本のゲームを追加する!とは説明されていたけど、本当に何のゲームが入っているかは見てみるまでわかりませんからね…

 

f:id:honeylab:20190326225801p:plain

ほんとに届いたわ。チャイナテープも開封されてない。

中身が本当に入ってるなら税関でハネられるべきものなんだと思う。

中身もそうだけど、普通にプレイステーションのロゴが入ってるだけでアウトだろ…

f:id:honeylab:20190326124311j:plain

f:id:honeylab:20190326230101p:plain

尚、商品名は「adapter」です。

f:id:honeylab:20190326225818p:plain

うん、確かにadapterだな。

f:id:honeylab:20190326214131j:plain

大丈夫かなこれ。

 

というわけで、さっそく開封

 

して、パソコンに差す。

f:id:honeylab:20190326230428p:plain

f:id:honeylab:20190326230516p:plain

Windowsではあかんやつですね。ということはext4か。

Linuxに差す。

f:id:honeylab:20190326230646p:plain  f:id:honeylab:20190326230713p:plain

まぁ思った通りの構成。

気になるのは、LUPDATA.BINの内容。

どうやって解凍するんだっけかな…誰かやってくれるだろ

True Blue PSC Hack dump · GitHub

というわけで、やってもらった。

実は、この商品にBleemSyncかAutoBleemかpsxc_expandrか何かの一部が含まれるんじゃないかと思ったんですが、いろいろごちゃまぜのオリジナルブレンドのようです。

swingflip氏によればBleemSyncの古いコードが多く含まれるとのことです。

 

また、BleemSyncは起動中にUSBメモリに書き込みするためPoweredハブがあったほうがいいですが、読み込みだけで古めのUSBメモリを使うことでそのへんをクリアしているようですね。かしこい。

ちなみに、これが本当にPSCで動くかどうかは興味がないので試してません。

 

せっかくなので分解しよう。

たぶん安物のUSBストレージ

f:id:honeylab:20190326231955j:plain

f:id:honeylab:20190326231707j:plain

f:id:honeylab:20190326231929j:plain

これ、メモリチップにSanDiskって書いてあるけど、それすら信じられないなw…

せっかく2000円で買ったので、64GBのUSBメモリとして使ってみますが、いつまで動くかなw

 

 

 

で、税関に、これはあかんやつやで、って報告したったらいいのかな。

Amazonにも同じの売ってるんだけど、これマジで駄目なやつじゃないか…

 

PSCにUSB無線ドングルのドライバを入れようとしてハマった話

PSCに無線LANUSBを繋ぐ方法を標準化しようと思ってアレコレしている中で、
上手く行かない事象があったので記録しておきます。
多分ここに書いてあるようにすれば解決するし、PSC以外の似た環境でも発生しうることだと思います。

PSCのKernelはSONYからリリースされていて、configも整っているので、
make menuconfigからモジュールを設定してやれば自由にinsmod可能なモジュールを追加することができます。

f:id:honeylab:20190202205126p:plain

なので、適当に手持ちや安価に買える無線LANUSBドライバをコンパイルしてテストしていたのですが、せっかく使おうと思ったTP-LinkのTN-WN725を使うために

RTL8188EUの(stagingですが)ドライバをコンパイルし、insmodしたところカーネルがクラッシュしてしまいました。

[ 134.697838] <1>.(1)[1276:insmod]r8188eu: module is from the staging directory, the quality is unknown, you have been warned.
[ 134.703522] <1>.(1)[1276:insmod]Chip Version Info: CHIP_8188E_Normal_Chip_TSMC_D_CUT_1T1R_RomVer(0)
[ 134.729163] <2>.(2)[1276:insmod]Unable to handle kernel NULL pointer dereference at virtual address 00000004
[ 134.730441] <2>.(2)[1276:insmod]pgd = d96b8000
[ 134.731013] [00000004] *pgd=7f6db835
[ 134.731487] <2>-(2)[1276:insmod]Internal error: Oops: 817 [#1] PREEMPT SMP ARM
[ 134.732416] Modules linked in: r8188eu(C+) mac80211

 検索で引っかかるように↑に貼っておきます。

ぱっと見る感じ、NULLポインタアクセスっぽいのですが、
動作中に不安定なるとかならまだしも、stagingとはいえ、insmodした瞬間に落ちるようなバグが残っているとは思えません。
もしあったとしても、凡バグでちょっといじれば直せそうな気がしたので、
その近くにprintfを入れたり、insmodのパラメータでdebugを指定したりしてみました。

そうすると、どうやら usb_intf.c の

  memcpy(pnetdev->dev_addr, padapter->eeprompriv.mac_addr, ETH_ALEN);

 この行で落ちているようです。
メジャーなバグならもっと報告があるはず。ですが、数件レポートがあるだけで
解決したという報告もありません。


その周辺を見てみても、このアドレスを触っている文はありません。
で、pnetdevの型は…

struct net_device *pnetdev  

らしい。
もしかすると、特定のカーネルから急に構造が変わって対応していないのかもしれない、と思ってバージョン違いを見れそうなサイトを見てみました。

https://elixir.bootlin.com/linux/latest/source/include/linux/netdevice.h

 該当のメンバは

f:id:honeylab:20190202210500p:plain

1926行で宣言されていました。ズルズルっと上にたどってみていると

f:id:honeylab:20190202210622p:plain

ifdefの山…

そして偶然目に止まった

f:id:honeylab:20190202210735p:plain

この CONFIG_WIRESS_EXT

見覚えがある…

そう、昨日家に転がっていたGW-450D をコンパイルしようとして失敗し、検索して見つけた

メモがわりのブログ: Debian Sid + Linux 4.6-rc1でPlanex GW-450D KATANAを使う

を参考にしてこのフラグをセットしていたのだ。

どうやら、一部の無線LANのドライバで使用されるこのメンバを利用するモジュールconfigで選択した際に、このフラグがセットされるようだ。

 

PSCに内蔵されているカーネルではCONFIG_WIRESS_EXTがセットされていないため、構造体メンバの違うカーネルとドライバを組み合わせようとしてクラッシュするのは当然だ。

PSCには普通に考えたら無線LANドライバは入れないからな…
とはいえ、ソースツリーは、なんでそんな事になってるのよ…

今まで似たようなテストをしていてさらっと通っていたのは、多分カーネルも一緒にビルドして書き換えていたのできちんと組み合わせができていたからだと思う。
オリジナルのカーネルに戻していたので初めて気がついた。

というわけで、今後リリースされるカーネルではなにか適当な無線LANドライバをselectしておくことで、insmodできるドライバを増やせるように上記フラグをセットしておくといいんじゃないかな…