USB 経由で通信カードを使います。Linux につなげたときに ttyACM として認識するカードなら、同じ手順でできると思います。
通信カードは KWINS の KW-S102C、USB への変換は、IO-DATA の USB2-PCADPG を使います。
まず、カーネルモジュールが必要なので、同じカーネルバージョンを用意して、
LinkStation/TeraStation/玄箱/PPC/kernel/2.6.30.5を参考に作業をします。
カーネルソースを取得して展開します。
# wget http://ring.maffin.ad.jp/archives/linux/kernel.org/kernel/v2.6/linux-2.6.31.12.tar.bz2
# tar jxvf linux-2.6.30.5.tar.bz2
# mv linux-2.6.31.12 linux-2.6.31.12_kurobox
# cd linux-2.6.31.12_kurobox
コンパイルしたカーネルを使う予定はありませんが、一応、mtd 関係は修正しておきました。
# make linkstation_defconfig
# cp -p ./.config ./.config.orig
# make menuconfig
次に、必要なモジュールは cdc_acm です。
menuconfig でモジュールの定義をして作成しても、カーネルとモジュールのバージョンが異なる(2.6.31.12 と 2.6.31.12_kurobox) ので先にバージョンをカーネルにあわせます。
どこを直せば良いのかよくわかりません。検索して、Makefile を修正して 2.6.31.12_kurobox になるようにしました。
menuconfig で cdc_acm をモジュールに設定して早速コンパイルします。
# make modules
結構時間がかかります。モジュールが作成できたら、drivers/usb/cdc_acm.ko をコピーします。
# cp drivers/usb/class/cdc-acm.ko /lib/modules/2.6.31.12_kurobox/kernel/drivers/usb/class/.
# depmod -a
これで通信カードを USB でつなぐと、cdc_acm モジュールが組み込まれ、/dev/ttyACM0 が使えるようになりました。
次は、ppp の設定です。これらは、GUI を使って設定したほうが楽です。
GUI で設定するには、
# yum install system-config-\*
で設定ツールをインストールして、他の Linux マシンから、X11 を ssh でフォワードしてやればいいと思います。
私は、一度設定したことがあるので、手動でやりました。
設定ファイルを作成します。
/etc/sysconfig/network-scripts/ifup-プロバイダ
ここで、プロトコルやその他の設定を行います。
------------------------ここから---------------------------------
DEVICE=ppp0
BOOTPROTO=dialup
TYPE=Modem
NM_CONTROLLED=no
ONBOOT=yes
USERCTL=yes
PEERDNS=yes
IPV6INIT=no
AC=off
BSDCOMP=off
VJCCOMP=off
CCP=off
PC=off
VJ=off
LINESPEED=115200
MODEMPORT=/dev/ttyACM0
IDLETIMEOUT=600
PROVIDER=プロバイダ
DEFROUTE=yes
PERSIST=yes
PAPNAME=ユーザ名
WVDIALSECT=wvdialでの識別名
MODEMNAME=Modem0
DEMAND=yes
DNS2=セカンド DNS の IP アドレス
DNS1=DNS の IP アドレス
PPPOPTIONS=
------------------------ここまで---------------------------------
ダイヤルアップでの接続をしますので、ppp の設定も必要です。
# yum install wvdial.ppc
でダイヤラーをインストールして、/etc/wvdial.conf にプロバイダ用の設定を作成します。ここにパスワードが記録されます。
------------------------ここから---------------------------------
[Modem0]
Modem = /dev/ttyACM0
Baud = 115200
SetVolume = 0
Dial Command = ATDP
Init1 = ATZ
Init3 = ATM0
FlowControl = XONXOFF
[Dialer 識別名]
Username = プロバイダのユーザ名
Password = プロバイダのパスワード
Phone = 電話番号
Stupid Mode = 1
Init1 = ATZ
Inherits = Modem0
------------------------ここまで---------------------------------
ppp は、 /etc/ppp/peers にプロバイダ名でファイルを作成しました。wvdial を起動するスクリプトです。
------------------------ここから---------------------------------
connect "/usr/bin/wvdial --remotename 識別名 --chat 'プロバイダ名'"
------------------------ここまで---------------------------------
wvdial の識別名はプロバイダ名と同じものを使いました。
# ifup ppp0
としてみました。が、なんと、ppp のモジュールがなかったようです。
必要そうなモジュールをコンパイルして追加しました。
bsd_comp, ppp_deflate, ppp_synctty, ppp_async, ppp_generic, slhc, slip を /lib/modules/2.6.31.12_kurobox/kernel/drivers/net へコピーしました。
# depmod -a
# modprobe ppp_generic
# ifup ppp0
これでつながります。再起動すると自動でつながりました。
大丈夫そうだったので、Alsa の USB-AUDIO もコンパイルして追加しました。
玄音をつないでみたところちゃんと音が出ました。
ロードしているモジュール(mp3 再生中)
# lsmod
| Module | Size | Used by | |
| snd_usb_audio | 84492 | 2 | |
| snd_seq | 55604 | 0 | |
| snd_pcm | 71236 | 2 | snd_usb_audio |
| snd_timer | 23792 | 3 | snd_seq,snd_pcm |
| snd_page_alloc | 12144 | 1 | snd_pcm |
| snd_usb_lib | 19564 | 1 | snd_usb_audio |
| snd_rawmidi | 24780 | 1 | snd_usb_lib |
| snd_seq_device | 10116 | 2 | snd_seq,snd_rawmidi |
| snd_hwdep | 11204 | 1 | snd_usb_audio |
| snd | 54264 | 9 | snd_usb_audio,snd_seq,snd_pcm,snd_timer,snd_rawmidi,snd_seq_device,snd_hwdep |
| soundcore | 9312 | 1 | snd |
| ppp_deflate | 8664 | 0 | |
| zlib_deflate | 23456 | 1 | ppp_deflate |
| ppp_async | 12948 | 1 | |
| crc_ccitt | 5148 | 1 | ppp_async |
| ppp_generic | 24308 | 6 | ppp_deflate,ppp_async |
| slhc | 8864 | 1 | ppp_generic |
| cdc_acm | 18956 | 2 | |
なんかあっけなく動いています。普通の Fedora ですね。ジュークボックス代わりにもなりそうです。