elmmpc
MP3プレイヤー"ELM-MPC"用ダウンローダ for Linux

Created: 5 Aug, 2001
Card Captor <card_captor@geocities.co.jp>

1. はじめに

1.1 elmmpcとは?

elmmpcはえるむさん開発のMP3プレイヤー、 ELM-MPCに 音楽データをダウンロードするプログラムです。 もともとELM-MPCに備わっているモニタを操作するツールですので、 ダウンロードだけでなく、記憶した曲のリストを調べたり 曲を削除することもできます。

もともとこのMP3プレイヤーはなにかと言うと、 若松通商でMP3用のLSIを単体で販売していたものを、 えるむさんがプレイヤーとして完成させたものです。 その後、トランジスタ技術にこのプレイヤーの記事が掲載され、 キットとして通信販売される等、ごく一部で大変反響がありました。

トランジスタ技術誌上に掲載されたMP3プレイヤーのケースが 木之本さくら嬢であったため、CCさくらMLでも話題になったほどです ^^; …っていうかすいません、私がネタふりました(爆)

もともとこのキットにはMP3データのダウンローダや、 ファームウェアの転送プログラムが含まれています。 ただし、これらはWindows/DOS上でしか動作しません。 私は自宅ではほとんどLinuxまたはSolarisのみで生活しており、 MP3データを入れ換えるたびにWindowsを起動する必要があって非常に煩わしいため、 このプログラムを作成しました。

このプログラムはPC/AT互換機用Linux2.2.xで動作します。 なお、私の環境は以下の通りです。

1.2, このパッケージの使用条件

このパッケージおよびパッケージをコンパイルしたものは、 どなたでも自由に使用・改変・再配布することができます。 ただし、再配布に際しては、再配布を受ける人がソースコードを 得る手段を保証しなければなりません。

このパッケージを使用して発生する事態に対して、 作者は一切の責任を負いません。

Copyright © 2001 Card Captor

オリジナルの配布は、 http://www.geocities.co.jp/Technopolis/6855/で 行っています。

2, 準備

2.1, コンパイル

  1. ソースを展開します。
    % gzip -dc elmmpc-X.X.X.tar.gz | tar xvf -
    
  2. makeします。
    % cd elmmpc-X.X.X
    % make
    
  3. rootになってmake installします。
    # make install
    

elmmpcはI/Oポートを直接叩くためroot権限が必要です。 そのため、実行ファイルはrootにsetuidされて/usr/local/binにインストールされます。 安全のためプログラムは実行直後にI/Oアクセス権以外のroot権限を捨てるようになっていますが、 I/Oアクセス権はforkしても継承されます。 プログラムを改造する場合は注意してください。

2.2, 確認

このプログラムを動かす前に、 /etc/inittabなどを調べてgetty等のプログラムが すでにシリアルポートをオープンしていないか確認してください (なお、gettyは、Linuxでは実際の名前はmingettyやagettyであることが多いです)。 もし、これらのプログラムがすでにシリアルポートをオープンしていると、 elmmpcと入力を奪いあうため、両者が誤動作します。

確実を期すには、lsofコマンドを使ってください。 これは、あるファイルがどのプロセスによってオープンされているか調べます。 すでにオープンされている場合、

# lsof /dev/ttyS0
COMMAND PID USER   FD   TYPE DEVICE SIZE   NODE NAME
getty   259 root    0u   CHR    4,1      409885 /dev/ttyS0
getty   259 root    1u   CHR    4,1      409885 /dev/ttyS0
getty   259 root    2u   CHR    4,1      409885 /dev/ttyS0
のように表示されます。 何も表示されなければ、入力を奪い合うことはありません。

3, 実行

3.1, コマンドの形式

% elmmpc [-v] [-f serial] command [argument]

3.2, オプション

-v
メッセージを冗長にします。
-f serial
シリアルポートを指定します。指定しない場合、/dev/ttyS0が使用されます。
command [argument]
実際には以下のどれかになります:
list
ダウンロードされているMP3の曲データのリストを表示します。
play N
N番目の曲データを演奏します。
delete N
N番目の曲データを削除します。
deleteall
曲データをすべて削除します。
write filename [filename ...]
MP3ファイル filenameをELM-MPCにダウンロードします。
renum N M
N曲目とM曲目のデータを入れ換えます。
format-media
メディアをフォーマットします。結構時間かかります。

3.3, 動作一般

ELM-MPCのモニタは、RS-232Cが接続されていないと 電源が切れてしまう仕様になっているため、 やや利用方法が分かりづらくなっています。 一般的には、以下のような手順で操作することになります。
  1. MP3プレイヤーとPCを接続する。
  2. Linux上でelmmpcコマンドを実行する。
  3. MP3プレイヤーのSW3を押して電源を入れる。
  4. elmmpcコマンドがモニタの起動を確認し、指定された処理を行う。
  5. 処理が終わると、elmmpcはMP3プレイヤーとの接続を切断する。
  6. MP3プレイヤーの電源が切れる。もし別の処理をしたい場合は、2に戻る。

5, 動かない時は

あきらめてWindowsで動かしましょう… というわけではありませんが (でも80%くらいそう思ってたりして ^^;)、 まずはキットの説明書もしくは えるむさんのページを参照して、 Windows/DOSの環境で動くか確認してください。

次にLinux上の通信ソフト(minicomなど)を用意し、 MP3プレイヤーの電源を入れた時にMP3プレイヤーのモニタのプロンプトが 表示されるか確認してください。 まったく表示されない場合は、Linux上でシリアルポートを扱う環境が整っていません。 読める場合と読めない場合がある場合、gettyなどがシリアルポートを オープンしていないか確かめてください。

次に、"elmmpc -v list"を実行し、MP3プレイヤーのSW3を押してください。 "iopl: Operation not permitted"と表示される場合は、 インストールが正しくできていません。 /usr/localがNFS上にある等の理由が考えられます。

これでも動かない場合は、多分私のバグです ^^;; すいませんが、連絡ください。