Retron77(Atari 2600互換機)にsshで接続
概要
カスタムファームウェアを入れたRetron77にssh接続する方法の記録。
オリジナルのファームウェアで動作するかはよくわからない。
githubのREADMEに全部載っているけど、実際に使用できた機器なんかの記録用。
github.com
購入した機器
- USB Lanアダプタ
https://www.amazon.co.jp/dp/B00484IEJS
RTL8150、RTL8152、AX88xxxベースのチップを使ったものが望ましい。
Retron77のLinux Kernelが古めなのでドライバーが対応できない可能性があるとのこと。 - USB Y字ケーブル
https://www.amazon.co.jp/dp/B00X3MUBZG
電源、USB Lanアダプタ両方をMicro USBに接続させるためY字ケーブルが必要。
developerモード
ssh接続をするためにはdeveloperモードにする必要がある。
SDカードのルートにdeveloperファイルを作成。
中身は空でOK。
機器接続
Retron77にUSB LanアダプタとY字ケーブルを接続。
ssh接続
Retron77の電源を入れるとipアドレスが割り振られるので、ルーターの管理画面から確認。
ここでは192.168.0.10にipが割り当てられたと仮定しての接続。
ユーザはrootユーザを使用するとのこと。
$ ssh root@192.168.0.10
初回の場合は接続するかどうか聞かれるのでyes
The authenticity of host '192.168.0.10 (192.168.0.10)' can't be established. RSA key fingerprint is SHA256:■■■■■■■■■■■■■■■■■■■■■■■■■. This key is not known by any other names Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
パスワード聞かれるのでデフォルトのパスワードの「whyNotFrye」を入力
$ root@192.168.0.10's password: whyNotFrye
パスワードはSDカードの sys/settings
ファイルで設定可能。
MSXにメガドライブのコントローラを接続する
いろんなところで同じ内容の記事書かれていると思うけど、つまづいてしまった箇所あったのでまとめる。
概要
MSXもメガドライブもコントローラーの端子がDsub 9pinのコネクタだけどピンアサインが違っている。
上下左右、ボタン1は使用可能だが、ボタン2は使用できない。
また、GNDの位置が違っているので本来ならつなげるのもよくないという記事も見た。
そこで配線だけ変えてMSXでボタン2含めて使用できるようにしてみる。
作るもの
こんな感じでメガドライブコントローラーとMSXコントローラー差込口の間を取り持つ変換機を作る。
メガドライブコントローラーの仕様
MSXに配線替えでつなぐ場合は↓のサイトにあるHighの部分しか取得できない模様。
発信 | D0 | D1 | D2 | D3 | D4 | D5 |
---|---|---|---|---|---|---|
Low | ↑ | ↓ | L | L | A | S |
High | ↑ | ↓ | ← | → | B | C |
つまり、上下左右BCボタンのみ利用可能。
他のボタンを使いたい場合は間にマイコン挟んで処理してあげる必要があるってことなのかな。
材料
- メガドライブコントローラーの延長コード
https://www.amazon.co.jp/dp/B08XYN6G81 - Dsub 9pinのオス端子(はんだ付け用)
https://akizukidenshi.com/catalog/g/gC-00029/ - Dsub 9pinシェル
https://akizukidenshi.com/catalog/g/gC-00034/
延長コードはDsub 9pinのメス端子で代用できそうだったが、羽の部分が邪魔になりそうだったため見送り。
道具
- ドライバー
- ニッパー
- はんだごて
- はんだ
作業
- 延長コードを切断
- 延長コードの皮むき
中の線を1つ切ってしまい、やりなおした。 - Dsub 9pinオスに結線
何回もやり直したのでむき出しの線も短くなって接続部分も汚くなった。
動画なんかを見ると熱収縮チューブで接続部分を保護していた。 - Dsub シェルでオス端子を保護
結線について
今回のポイントのピンアサイン。
以下のような形で結線する。
MSX側ピン | メガドライブ側ピン | 内容 |
---|---|---|
1 | 1 | ↑ |
2 | 2 | ↓ |
3 | 3 | ← |
4 | 4 | → |
5 | 5 | +5v |
6 | 6 | ボタン1 |
7 | 9 | ボタン2 |
8 | 結線しない | |
9 | 8 | GND |
ボタン1をC、ボタン2をBに割り当てる人が多いみたいだったけど、逆のほうがプレイしやすかったのでそうしている。
このあたりはゲームによって変わりそう。
グラディウスだとボタン1=ショット、ボタン2=パワーアップ。
中にはスイッチで入れ替えることができるようにしている人もいた。
最初両方のピンアサインを左上からピン1としてしまった。
このせいで、何度やってもコントローラーが効かずに悩んでしまった。
ケーブルの色とピンアサイン
今回の延長ケーブルでは、この色になっていた。
紫と白がほとんど同じ色に見える点注意。
ケーブルが違えば色も違う気がする。
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|
桃 | 水 | 灰 | 紫 | 茶 | 緑 | 白 | 青 | 黄 |
完成
MSX(HB-F1XD)のキーボード修理
中古でHB-F1XD買ったけど半分ジャンクみたいな状態だったので対応したことを忘れないようにメモ。
状態
キーボードに関してはほとんどのキーが効かない状態と記載。
実際に起動させてみるとQWERTYの左側のキーは割と効く、右側はほとんど効かない状態。
対応1(掃除)
修理、メンテ動画見るとmsxはキーが効きづらくなることが多いらしいが、掃除してあげるだけでなおることもあるっぽい。
掃除はキーボード内のシートを軽くふいてあげるだけでいいらしい。
購入したものはキーボード自体がめちゃくちゃ汚かったのでキートップ全部外してキートップも水洗いした。
この掃除だけでほとんどのキーが効くようになった!
ダメなのがQWKL等一部キーとカーソルの上と右はまるで効かない、Returnは5回に1回くらい効く感じ。
掃除では限界っぽいので別の方法を模索する。
対応2(断線修理)
そもそも、キーがつながっているかどうかテスターで調べてみることにした。
するとQWKL各キー同士はつながっているものの、そこからmsx本体につながっている箇所がつながってないみたい。
カーソルの上、右キーも下キーの片側とつながっているはずなのにテスターで反応がない。
キー同士がつながっている箇所をよく見ると黒くなっている部分があるようで、これが断線の原因の予感。
どう対応したらいいかわからず検索してみると↓のサイトを発見。
www.okqubit.net www.okqubit.net
- ラッピングワイヤをセロテープで固定
- 銅箔テープでつなぐ
- 導電性のインクでつなぐ
こんな感じで対処しているようだったので真似して 導電性インク使ってみることにした。
使ったのは秋月に売っているこの商品。
まず、黒くなっている周りの導通部を露出させる必要があるっぽい。
ブログによると「フイルムをピンセットで軽く擦って導通部を露出させ」とあるけど、どの程度やればいいかわからなかった。
テスター使ってちょっとずつやってみたところ、銀色の部分が見えてくるぐらいでOKみたい。
露出させた部分と最寄りのキーが触れる個所との導通をチェック。
さらに、黒い箇所を挟んで露出させた部分の導通もチェックするとやっぱりつながってないようで、この黒い部分で断線していたようだ。
この状態からむき出しになった導通部を導電性インクで覆う。
厚みをどれくらい持たせればいいかわからなかったのでチューブから出たサイズそのままで使う。
だめなら削ってみて調整しようと思う。
導電性インクは乾かないとつながらないっぽい感じだったので一晩寝かせた。
この状態でキーボード接続してみたところ、反応しないキーはなくなった!
Returnはあいかわらず反応しづらい。
対応3(Returnキー復旧)
Returnキーに関してはまったく効かないわけではなかったのでキーが触れる部分を見てみた。
するとReturnキーに使われていたものは摩耗して表面がツルツルになっているように見えた。
テスターで抵抗値はかってみたところ、ほかのキーは100Ωなのに対し、Returnは300Ωになっていた。
抵抗値が高いから通電しにくくなってキー押した判定にならないってことでいいのかな?
アルミホイルつけてみるとか考えてみたが、使ってない10キーのキーと入れ替えでいいやと思ったので入れ替え。
これでReturnもよく効くようになってコマンド周りの入力で困ることはなくなったように思う。
掃除だけで終わると思ってたけど思ったより苦戦してしまった。
備考
修理した後、↓のサイトも発見。
こちらは、コンダクティブペンというもので同様に断線に対応していた。
粘性が低くて使いやすそうなので、こっちで対処したほうがやりやすかったかもしれない。
ただし、値段は高いみたいだ。
zlib1.2.11をZaurus向けにビルド
ダウンロード
$ mkdir -p src/zlib $ cd src/zlib $ wget https://zlib.net/zlib-1.2.11.tar.gz $ tar zxf zlib-1.2.11.tar.gz
ipk向けディレクトリ作成
$ mkdir -p ipk/opt/QtPalmtop $ mkdir ipk/CONTROL
ビルド
$ cd zlib-1.2.11 $ ./configure --prefix=/home/zaurus/src/zlib/ipk/opt/QtPalmtop $ make $ make install
ipk作成
$ cd ../ $ vi ipk/CONTROL/control
Package: zlib Priority: optional Section: libs Version: 1.2.11 Architecture: arm Maintainer: kkimi Depends: Description: zlib is compression library.
$ ipkg-build ipk
tree1.7.0をZaurus向けにビルド
前回作成したDocker上のZaurus開発環境を使用する kkimi.hatenablog.com
ダウンロード
$ mkdir -p src/tree $ cd src/tree $ wget http://mama.indstate.edu/users/ice/tree/src/tree-1.7.0.tgz $ tar zxf tree-1.7.0.tgz
ipk向けのディレクトリ作成
Zaurusは/opt/QtPamtop以下へのインストールが推奨とどっかで見た気がする
$ mkdir -p ipk/opt/QtPalmtop $ mkdir ipk/CONTROL
ビルド
configureがないのでMakefileを直接編集する
$ cd tree-1.7.0 $ vi Makefile
-prefix = /usr +prefix = /home/zaurus/src/tree/ipk/opt/QtPalmtop -CC=gcc +CC=arm-linux-gcc VERSION=1.7.0 TREE_DEST=tree
$ make $ make install
ipkパッケージ作成
$ cd ../ $ vi ipk/CONTROL/control
アプリの詳細を記述する
DescriptionはWikipediaとかからコピーでOK
Package: tree Priority: optional Section: base Version: 1.7.0 Architecture: arm Maintainer: kkimi Depends: Description: Tree is a recursive directory listing command that produces a depth indented listing of files, which is colorized ala dircolors if the LS_COLORS environment variable is set and output is to tty.
$ ipkg-build ipk
Zaurusの開発環境をDockerで作成
かなり昔にVirtualbox上に作成していたZaurusのクロスコンパイル環境をDocker上に作成してみる
今でもSharpのサイトからパッケージをダウンロードできたのは驚き
github上にDockerfileを作成して管理する
準備
今回はWindows上で作成
Dockerfile作成
Dockerfile自体はgithubで作成して管理
CentOS上に必要なパッケージをインストールしているだけ
github.com
Dockerfileからイメージを作成
-tでイメージ名を指定
$ git clone https://github.com/kkimigawa/zaurus-cross-compile-on-docker.git $ cd zaurus-cross-compile-on-docker $ docker build ./ -t zaurus-dev
コンテナ作成
ホストとファイルのやり取りをするために-vオプションでDockerからc:/Usersにアクセスできるようにする
runしたらそのままzaurusユーザとしてログインするはず
$ docker run -it -v c:/Users:/data zaurus-dev /bin/bash
コンパイルテスト
$ vi test.c
/* テストプログラム */ #include <stdio.h> int main(void) { printf("test\n"); return 0; }
$ arm-linux-gcc -o test test.c $ file test test: ELF 32-bit LSB executable, ARM, version 1, dynamically linked (uses shared libs), for GNU/Linux 2.0.0, not stripped
arm向けにビルドできているっぽい
testをZaurusに持っていって実行したところ問題なく動作した
Virtualbox上の開発環境ではOpenSSLやnethackとかビルドしていたみたいなので今後はそれらをビルドしてみたい
ZaurusでArch Linux【失敗】
以前にZuaurus3x00向けにArch Linuxにインストールしている人がいたが、1000と860しか持ってないので試せなかった。
最近見たら1000向けのファイルもアップロードされいるっぽい。
開発者が答えているスレッドでも1000持ってないが動くはずのようなことが書かれていたため試してみた。
kexecbootのインストール
- ここからlinux-2.6.26-c1000-frankenstein.tar.gzをダウンロード
- FATにフォーマットしたSDカードに↑のファイルを書き込み
- Zaurusの電源をOFF
- 電源プラグを挿してOKボタンを押しながら電源ON
- アップデート→SDで更新
linux-3.10.y-c1000-f2fs-kexec-test-r0.tar.gzのほうは試してみたところ起動できなかった。
Arch Linuxのインストール
LinuxマシンがなかったのでRaspberry PiにRaspbianをインストールして実行。
$ sudo parted -s -a optimal /dev/sda mklabel msdos -- mkpart primary ext4 1 -1 $ sudo mkfs.ext4 /dev/sda1 $ sudo mount /dev/sda1 /mnt/ $ sudo bsdtar xvf alarm-zaurus-c3x00-minimal-rootfs-may2017.tar.xz -C /mnt/ $ sudo cp alarm-zaurus-c3x00-minimal-rootfs-may2017.tar.xz /mnt/root/ $ sudo umount /mnt/; sync
※CFの場合は/mnt/boot/boot.cfgの APPEND=root=/dev/mmcblk0p1 を APPEND=root=/dev/sdb1に変える
起動と失敗
あとはSDかCFを挿して電源ONするだけだがkexecboot起動後にインストールしたデータが認識されない。
ext4をext3やext2に変えても変化なし。
やり方をミスしてるっぽい気がする。
更新されたらまた試してみたい。