honeylab's blog

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

Succeeded to working PlayStation Classic Rear-USB-Port as HOST

ぶっちゃけ私自身はこれそんなに重要な機能だと思ってなかったんだけど、
どうしても背面USBをOTGにして前面をすっきりさせたいっていう要望は結構あったみたいなのでアレコレしてみた。

 

まず、デフォルトのカーネルのオプションではOTGが無効になってる。

 ここで、コンパイルプションでOTGを無効にすると、microUSBのIDピンか、VBUSを見てUSBのモードを切り替えるコードも一緒に有効化される。
(というか、普通のAndroid携帯とかではそれでいい)

この状態でコンパイルするとコンパイルは通る。

が、PSCではIDピンやVBUSはSoCにつながっていないように見える。
IDピンやVBUSとの接続はDeviceTreeファイルで設定するらしいんだけど、
実際につながっているかどうかわからないので設定できない。
この状態でカーネルを起動させると、DTファイルに設定されてない、といってKernelが起動せず止まってしまう。


なので、DTファイルから読み込んで、IDピンの監視をするあたりを
まるっとコメントアウトしてしまう。
これでは切り替えができないように見えるのだが、
ソフトウェア切り替えを有効にするオプションがある。
これを使うと。

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

 のように起動中に強制的にHOSTモードに切り替えるようにできた。

とりあえず、使う人がいるので置き換えるファイルだけおいておく。

Dropbox - usb20_host.c.patch


SONYの公開しているファイルからこれを一個だけ置き換えて、

export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-


make aiv8167_rockman_emmc_defconfig

してできたimageをPSCのBOOTIMG1から抽出したDTBとまとめてFITイメージにして
fastbootか起動してる状態からBOOTIMG1に書き込んでやればいいけど、
文鎮化したときに自分で治せる人以外やってはいけない

ここまで読んでわからない人には難しいけど
近いうちにBleemSyncの機能としてマージされると思うので待っててね