contents
- カード情報の確認の仕方
- Corega CG-LAPCCTXDの場合
- BUFFALO LPC-PCM-CLXの場合
- 別解: productを文字列で指定する
- パッチ
- 疑問など
- コメントをどうぞ
ネットワークカードを使いたい with FreeBSD 6-stable
古いノートパソコンでネットワークを使う必要性があって、pccardなネットワークカードを買ったのですが、見事に認識しませんでした。 で、もう一枚買ったカードも外れでした…
- BUFFALO LPC-PCM-CLX
- Corega CG-LAPCCTXD
で、動かそうと思ったのですが、4.*あたりの情報(pccarddを使う方法)は多かったのですが、6-stableでどうしたらいいかうまく見付けられなかったので、ここにまとめときます。
カード情報の確認の仕方
とりあえず、カードを差したときのdmesgを確認します。
標準的な設定だとあまり詳しい情報は出ません。
pccard0: <unknown card> (manufacturer=0xffff, product=0x1090, function_type=6) at function 0 pccard0: CIS info: BUFFALO, LPC-PCM-CLX, ,
詳しいCIS turpleなどを得たい場合、現在は以下のようにkernel MIBで設定するようです。
surudoi [ ~ ] % sudo sysctl hw.cardbus.cis_debug=1 hw.cardbus.cis_debug: 0 -> 1 surudoi [ ~ ] % sudo sysctl hw.pccard.cis_debug=1 hw.pccard.cis_debug: 0 -> 1
すると、以下のように詳しい情報が得られます。
cis mem map 0xe7c38000 (resource: 0xe0210000) pccard0: CIS tuple chain: CISTPL_DEVICE type=null speed=null 01 02 00 ff CISTPL_VERS_1 15 19 01 00 42 55 46 46 41 4c 4f 00 4c 50 43 2d 50 43 4d 2d 43 4c 58 00 00 00 ff CISTPL_MANFID 20 04 ff ff 90 10 CISTPL_CONFIG 1a 05 01 01 c0 03 63 CISTPL_CFTABLE_ENTRY 1b 0b c7 81 19 07 55 4d 5d 65 30 ff ff CISTPL_CFTABLE_ENTRY 1b 07 07 08 ca 60 00 03 1f CISTPL_CFTABLE_ENTRY 1b 07 07 08 ca 60 40 03 1f CISTPL_CFTABLE_ENTRY 1b 07 07 08 ca 60 60 03 1f CISTPL_CFTABLE_ENTRY 1b 07 07 08 ca 60 00 02 1f CISTPL_CFTABLE_ENTRY 1b 07 07 08 ca 60 20 02 1f CISTPL_FUNCID 21 02 06 00 CISTPL_FUNCE 22 02 01 02 CISTPL_FUNCE 22 02 02 64 CISTPL_FUNCE 22 02 03 01 CISTPL_END ff cis mem map e7c38000 CISTPL_LINKTARGET expected, code 00 observed pccard0: <unknown card> (manufacturer=0xffff, product=0x1090, function_type=6) a t function 0 pccard0: CIS info: BUFFALO, LPC-PCM-CLX, ,
Corega CG-LAPCCTXDの場合
dmesgでは以下のような情報が得られます。
pccard0: <unknown card> (manufacturer=0xc00f, product=0x0000, function_type=6) at function 0 pccard0: CIS info: corega K.K., (CG-LAPCCTXD), (HardwareFirmwareVer.), (nothing)
どうも、このパターンは、CIS infoで表示されている文字列がマッチしているかどうかを調べて使えるようにしているみたいです。
で、触らないとダメなのは以下の通り。
両方のパッチから切り出しているので、オフセットがあると思います。
--- sys/dev/pccard/pccarddevs.org Tue Aug 29 13:00:20 2006 +++ sys/dev/pccard/pccarddevs Fri Sep 1 14:19:07 2006 @@ -672,6 +674,7 @@ product COREGA FAST_ETHER_PCC_TX { "corega&spK.K.", "corega&spFastEther&spPCC-TX", NULL, NULL } Corega FastEther PCC-TX product COREGA FETHER_PCC_TXD { "corega&spK.K.", "corega&spFEther&spPCC-TXD", NULL, NULL } Corega FEther PCC-TXD product COREGA FETHER_PCC_TXF { "corega", "FEther&spPCC-TXF", NULL, NULL } Corega FEther PCC-TXF +product COREGA LAPCCTXD { "corega&spK.K.", "(CG-LAPCCTXD)", NULL, NULL } Corega LAPCCTXD product COREGA WIRELESS_LAN_PCC_11 { "corega&spK.K.", "Wireless&spLAN&spPCC-11", NULL, NULL } Corega Wireless LAN PCC-11 product COREGA WIRELESS_LAN_PCCA_11 { "corega&spK.K.", "Wireless&spLAN&spPCCA-11", NULL, NULL } Corega Wireless LAN PCCA-11 product COREGA WIRELESS_LAN_PCCB_11 { "corega_K.K.", "Wireless_LAN_PCCB-11", NULL, NULL } Corega Wireless LAN PCCB-11
--- sys/dev/ed/if_ed_pccard.c.org Tue Aug 29 12:56:41 2006 +++ sys/dev/ed/if_ed_pccard.c Fri Sep 1 11:30:21 2006 @@ -154,6 +155,7 @@ { PCMCIA_CARD(COREGA, ETHER_II_PCC_TD), 0}, { PCMCIA_CARD(COREGA, ETHER_PCC_T), 0}, { PCMCIA_CARD(COREGA, ETHER_PCC_TD), 0}, + { PCMCIA_CARD(COREGA, LAPCCTXD), 0}, { PCMCIA_CARD(COREGA, FAST_ETHER_PCC_TX), NE2000DVF_DL100XX}, { PCMCIA_CARD(COREGA, FETHER_PCC_TXD), NE2000DVF_AX88X90}, { PCMCIA_CARD(COREGA, FETHER_PCC_TXF), NE2000DVF_DL100XX},
あとは、カーネルを再構築してインストールします。
で、リブートした後でカードを指すとed1として見えるようになるはずです。
ed1: <corega K.K. (CG-LAPCCTXD)> at port 0x3100-0x311f irq 9 function 0 config 32 on pccard0 ed1: [GIANT-LOCKED] ed1: Ethernet address: 00:0a:79:66:da:db ed1: type NE2000 (16 bit)
BUFFALO LPC-PCM-CLXの場合
こちらのdmesgは以下のような感じ。
pccard0: <unknown card> (manufacturer=0xffff, product=0x1090, function_type=6) at function 0 pccard0: CIS info: BUFFALO, LPC-PCM-CLX, ,
こちらでは、manufacturerが0ffff(=-1)で、product=0x1090なエントリを直接指定する方法で動作させています。
変更点は以下のような感じになります。
--- sys/dev/pccard/pccarddevs.org Tue Aug 29 13:00:20 2006 +++ sys/dev/pccard/pccarddevs Fri Sep 1 14:19:07 2006 @@ -276,6 +276,7 @@ product BUFFALO LPC4_CLX 0x0309 BUFFALO LPC4-CLX product BUFFALO LPC3_CLT 0x030a BUFFALO LPC3-CLT Ethernet Adapter product BUFFALO WLI_CF_S11G 0x030b BUFFALO AirStation 11Mbps CF WLAN +product BUFFALO2 LPC_PCM_CLX 0x1090 BUFFALO LPC-PCM-CLX /* Compaq Products */ product COMPAQ NC5004 0x0002 Compaq Agency NC5004 Wireless Card @@ -639,6 +640,7 @@ vendor IODATA3 -1 I-O DATA vendor LANTECH -1 Lantech Computer Company vendor MELCO2 -1 Melco Corporation +vendor BUFFALO2 -1 BUFFALO (Melco Corporation) vendor NDC -1 NDC vendor NEC -1 NEC vendor OEM2 -1 Generic OEM
--- sys/dev/ed/if_ed_pccard.c.org Tue Aug 29 12:56:41 2006 +++ sys/dev/ed/if_ed_pccard.c Fri Sep 1 11:30:21 2006 @@ -146,6 +146,7 @@ { PCMCIA_CARD(BUFFALO, LPC4_TX), NE2000DVF_AX88X90}, { PCMCIA_CARD(BUFFALO, LPC4_CLX), NE2000DVF_AX88X90}, { PCMCIA_CARD(BUFFALO, LPC_CF_CLT), 0}, + { PCMCIA_CARD(BUFFALO2, LPC_PCM_CLX), 0}, { PCMCIA_CARD(CNET, NE2000), 0}, { PCMCIA_CARD(COMPEX, AX88190), NE2000DVF_AX88X90}, { PCMCIA_CARD(COMPEX, LANMODEM), 0},
で、動作しているときのdmesgは以下の様になります。
ed1: <BUFFALO LPC-PCM-CLX> at port 0x300-0x31f irq 9 function 0 config 7 on pccard0 ed1: [GIANT-LOCKED] ed1: Ethernet address: 00:0d:0b:78:21:ce ed1: type NE2000 (16 bit)
別解: productを文字列で指定する
Corega CG-LAPCCTXDと同じように、productをIDで指定するのでは無く、文字列で指定する場合は以下のような感じになります。
--- sys/dev/pccard/pccarddevs.orig Sat Nov 5 03:11:23 2005 +++ sys/dev/pccard/pccarddevs Fri Sep 1 19:58:48 2006 @@ -276,6 +276,8 @@ product BUFFALO LPC4_CLX 0x0309 BUFFALO LPC4-CLX product BUFFALO LPC3_CLT 0x030a BUFFALO LPC3-CLT Ethernet Adapte r product BUFFALO WLI_CF_S11G 0x030b BUFFALO AirStation 11Mbps CF WLAN +/* product BUFFALO2 LPC_PCM_CLX 0x1090 BUFFALO LPC-PCM-CLX */ +product BUFFALO2 LPC_PCM_CLX { "BUFFALO", "LPC-PCM-CLX", NULL, NULL } BUFFALO LPC-PCM-CLX /* Compaq Products */ product COMPAQ NC5004 0x0002 Compaq Agency NC5004 Wireless Card @@ -639,6 +641,7 @@ vendor IODATA3 -1 I-O DATA vendor LANTECH -1 Lantech Computer Company vendor MELCO2 -1 Melco Corporation +vendor BUFFALO2 -1 BUFFALO (Melco Corporation) vendor NDC -1 NDC vendor NEC -1 NEC vendor OEM2 -1 Generic OEM
これらの使い分けは、同じプロダクト文字列は返すけど、マイナーバージョンアップなどでproduct IDが変わったりする場合は、こちらの方法を使うってことだと思います。
この場合も、manufacturerが0xffff(=-1)のBUFFFALOは現状では存在していないので、追加してあげてます。
パッチ
両方のカードのパッチをまとめたものです。
疑問など
- NDISって無線LANカードでは使っている人多いですが、普通のネットワークカードは動かせないの?
- (手順間違っていた可能性もありますが)LPC-PCM-CLXでうまく動かせませんでした(;-;)
- カーネル再構築以外に手は無いの?
- 昔みたいに/etc/pccard.confへの追記だけではうまくいかないのかなぁ…
- 某友人からのコメントですが、やっぱりモジュール化してそこだけコンパイルって手段かなと
# カード差す surudoi [ ~ ] % dmesg (snip) pccard0: <unknown card> (manufacturer=0xc00f, product=0x0000, function_type=6) at function 0 pccard0: CIS info: corega K.K., (CG-LAPCCTXD), (HardwareFirmwareVer.), (nothing) (snip) # カード抜く surudoi [ ~ ] % sudo kldload if_ed.ko # カード差す surudoi [ ~ ] % dmesg (snip) ed1: <corega K.K. (CG-LAPCCTXD)> at port 0x3100-0x311f irq 9 function 0 config 3 2 on pccard0 ed1: [GIANT-LOCKED] ed1: Ethernet address: 00:0a:79:66:da:db ed1: type NE2000 (16 bit) (snip) # カード抜く surudoi [ ~ ] % sudo kldunload if_ed.ko # カード差す surudoi [ ~ ] % dmesg (snip) pccard0: <unknown card> (manufacturer=0xc00f, product=0x0000, function_type=6) at function 0 pccard0: CIS info: corega K.K., (CG-LAPCCTXD), (HardwareFirmwareVer.), (nothing) (snip)