M700HD陥落(3)

M700HD君ですが、SSH接続が出来るようになったので本命(?)の

PC側からの全面コントロールアプリ作成を今流行りのバイブコーディングという

手法で試してみました。

プレーヤーのデザインは古き良きWINAMP風味にしてみました(懐;


基本的な作りは単純で、NETJUKEには /root/rmu.sh というスクリプトがある。

これを「HDPLAY」VOL12STOP など定義されたキー名を引数として実行するとリモコンのボタン操作をシェル側から再現できるという仕組みを取り入れたもの。

ssh -i netjuke.rsa root@192.168.x.x "/root/rmu.sh HDPLAY" ➡HDモードで再生

ssh -i netjuke.rsa root@192.168.x.x "/root/rmu.sh STOP" ➡再生停止

 

・せっかくのSSH接続なので鍵認証を設定することをAIに提案されるも色々面倒なので一旦は無難にパスワード方式で対応。

・当初は再生中の曲名やアルバム名を表示する予定はなかったけど味気ないので

 搭載。本体から再生ステータスを随時拾うことで簡単にできると思ったのですが、

 これがなかなか面倒でした。

 今も全てを把握した訳ではないですがざっくり書くと、本体内部のCurrentContentを取得することで対応。CurrentContentは=[10,x,group,track] という数値IDで構成。

「アーティスト種別」アルバムグループ番号」「トラック番号」という内部ID仕様で、本機のDBへ曲名・アーティスト名は別で読みに行っているようです。ただ、DBを直接読みに行こうとしても、DBの仕様が分からず、無理に読んでも「日本語」と「英語」が混在する曲の場合は文字化け多数・・・。結局はマトモに読めそうだったアーティスト名、アルバム名からCDDBを別途参照。トラック番号から曲名を類推取得する場当たり対応で全力でお茶を濁してます。詳しい人いたらこの辺の情報知りたいですが…。

 

・ここまで来たらAndroid携帯から制御出来るのも時間の問題かもしれません。

(使うだけならSSHコンソールアプリ入れて/root/rmu.shを直接叩けばOKだし)

M700HD陥落(2)

陥落させると調査のモチベーションが少し下がってしまった駄犬さんですごきげんよう。隅々まで調べきった訳ではないのにね…。

 

しかも当初の目的としていたSSH通信による筐体制御に

辿り着く道のりはまだ先、と。

 

てな訳で少し腰を据えてリモコンなしで本体をコントロールする方法を詰めて行こうと思います。

M700HD陥落(1)

要約。

SSH接続、攻略しました。

 

sub:/mnt/c/WINDOWS/system32$ ssh m700hd
root@192.168.10.xx's password:
Last login: Sat Apr 11 11:14:02 2026 from 192.168.10.xxxx
-bash-3.00#

 

telnet接続が出来るようになり、HDDの中身を遠隔で書換える手段を獲得。

逐一HDDを繋ぎ変えて編集する手間と破壊リスクを回避出来るため、内部検証が

とても捗りました。

 

―というわけで、M700HDの仕様について個人的なメモ、感想を更新。

続きを読む

転進、転進ー。

気を抜くといつの間にか約3週間更新停止。

死んではないですよ?

ジャンクM700hdちゃんは天に召されましたが。

 

ーどうも頻繁にHDD入れ替えで作業するから

内部配線を断線させたっぽい(哀

恐らくは細いFFCケーブル。

 

で、ChatGPTと情報整理をしていたら思わぬ提案。

SSHが駄目ならTELNETを食べれば良いじゃない。

と真っ当至極なお言葉。

ソレは先にイエ。

 

ズブの素人ゆえ、SSHでしか扱えないのかと思い込んでましたが、

通信の方法が違う

使うポートが違う

CPUの負担などが違うだけでやってることは

そこまで変わらない(超訳)とのこと。

むしろtelnetの方が動作が軽いらしい。

 

一旦SSHでの接続は断念し、telnetを進める予定。

まずは新しい患者(700HD)を調達せにゃぁ

組込Linuxとの戯れ

🔍 現状の事実整理(現状で確定したこと)

1. ネットワーク/sshd 自体は「生きている」

  • ARP 応答あり(.105 / .116

  • TCP 22 は 192.168.xx.xx で LISTEN

  • SSH ハンドシェイク完走(KEX / CIPHER / MAC 問題なし)

  • password 認証は成功ログが出ている

     
     
    Authenticated to 192.168.xx.xxx using.
     

👉 暗号方式の不一致ではない(古いけど合わせれば繋がる)

👉 認証失敗にはなっていない


2. 問題:「ログイン直後に必ず切断される」

共通点:

  • 認証成功後

  • セッション確立

  • PTY / shell を要求した瞬間 or 直後

  • サーバ側から Connection closed by remote host

≒ sshd 的には👇

「ログインは許可したが、起動すべきシェル/環境が即死した」

という状態。

 

SSHにたどり着いたと思ったら沢山宿題まみれだよぉ・・・。

科学の勝利(仮)

・ChatGPTの無料利用では話が全然進まないので、Plus契約しました(ぁ

 

検証の進め方としては、Net JukeからHDDを外して中のLinuxの起動を少しずつ書換、

SSHに関わる部分の検証、ネットワークを潰している箇所を調べる作業。

分からない所(挙動、コマンド、考え方)についてはChatGPT君に丸投げ。

 

最初は過去ログの通り、UbuntuのLiveCD版を使って作業を開始。

Ubuntuが吐いたエラー・コマンドログをChatGPTに伝える方法が「スマホカメラでの画面撮影」➡「画像アップロード」➡答え待ち(たまに画像の文字を間違うことも・・・)という超アナログ。作業効率が滅茶苦茶悪いので調べたところ、WSL2を使えばWindowsShellからChatGPTにテキストコピペで対応できることに気が付く。

作業効率は上がるも、HDDの繋ぎ変えが面倒かつ時間がかかる点は否めず。

 共立電子で電子パーツ(スクリューレス端子台)とSATAケーブルを調達。滅茶苦茶長いSATAケーブルを作り出し、HDDを交換する作業を短縮することに成功。

 

つい先ほど、ChatGPTから

  • 接続確立:Connection established.

  • 相手機種:remote software version IPSSH-6.6.0(かなり古い OpenSSH 系)

  • 相手が提示:diffie-hellman-group1-sha1

  • Windows OpenSSH 9.5 は 既定で group1 を無効 → 交渉失敗

つまり 「ネットワーク/iptables/sshd 起動」は全部OK
クライアント側の指定だけでログイン可能です。

というご宣言を頂きました!!

 

色々すっ飛ばして作業してますが、なんとかなりそう・・・??

M700HD vs とある科学のGPT(仮)

例によってM700HDのシステムの調査を進めているわけですが、

当人がLinuxに関してズブの素人ということもあって素晴らしく難航中(HAHAHA。

 

誰か助けてぇ・・・。

―とはいえ、そうも言ってられないのでとりあえず現状の調査状況をば。

=====================================================
【M700HDの構造】
=====================================================

・二重root構成(通常 + Recoveryの2種構成だと思う)

参考:ディスク構造(概念図)
/dev/sdd
├─ sdd1  : swap
├─ sdd2  : ext3
├─ sdd3  : ext3
├─ sdd4  : (未使用?/未調査)
├─ sdd5  : ★ 実rootfs(通常起動用)
├─ sdd6  : Recovery候補rootfs
├─ sdd7  : ext3(※音楽データ格納)
└─ sdd8  : ext3(DB情報格納)


・初回起動と2回目で挙動が異なるのが仕様である。

初回(おそらくsdd6からデータ呼んでる)
 ├─ 設定初期化
 ├─ パーティション初期化

 ├─IPTABLE(SSHを阻む要塞)が構築される

 └─ 再起動要求

2回目以降(sdd5から呼び出し)

 ├─初回起動時に築いた初期設定の上にデータを展開
 └─ 安定起動(起動時間短縮)

➡初回起動時に作成したデータを弄ると誤作動します

 

【通常時の動作までのフロー】

① 電源投入
   ↓
② rootfs マウント(sdd5)
   ↓
③ /etc/rc.d/rcS 実行
   ↓
④ /etc/rc.d/rc.sysinit 実行
   ├─ /proc mount
   ├─ /sys mount
   ├─ tmpfs を /mnt/var へ
   ├─ var.org 展開
   ├─ root.org 展開
   ├─ sysctl 適用
   ├─ fsck
   └─ swap有効化
⑤/etc/rc.d/rc 3 実行
   ↓
⑥ /etc/rc3.d/S* 実行(順次)
   ↓
⑦ /etc/rc3.d/D* 実行(並列)
   ↓
⑧ /etc/rc3.d/T* 実行
   ↓
⑨ iptables_add.sh start
   ├─ RESTORE_CHAINS
   ├─ なければ MAKE_CHAINS
   └─ SAVE_CHAINS
   ↓
⑩ UI描画系起動
   ↓
⑪ ネットワークサービス準備完了?

 

組込Linuxって皆こんなに難しいのか・・・?心折れそう。