Sirius -旧ブログ、更新されません-

2010年12月05日の記事

2010年12月5日(日) 12:27

玄箱HG の Fedora12 にカーネルモジュールの追加

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





















ModuleSizeUsed by
snd_usb_audio844922
snd_seq556040
snd_pcm712362snd_usb_audio
snd_timer237923snd_seq,snd_pcm
snd_page_alloc121441snd_pcm
snd_usb_lib19564 1snd_usb_audio
snd_rawmidi247801snd_usb_lib
snd_seq_device101162snd_seq,snd_rawmidi
snd_hwdep112041snd_usb_audio
snd542649snd_usb_audio,snd_seq,snd_pcm,snd_timer,snd_rawmidi,snd_seq_device,snd_hwdep
soundcore93121snd
ppp_deflate86640
zlib_deflate234561ppp_deflate
ppp_async129481
crc_ccitt51481ppp_async
ppp_generic243086ppp_deflate,ppp_async
slhc88641ppp_generic
cdc_acm189562

なんかあっけなく動いています。普通の Fedora ですね。ジュークボックス代わりにもなりそうです。

written by sirius [玄箱] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL
Sirius -旧ブログ、更新されません-

MySketch 2.7.2 written by 夕雨