2025/08/13(水) [n年前の日記]
#1 [ubuntu][debian][linux] rtl8xxxuについて調べていた
Ubuntu Linux 24.04 LTS に含まれているカーネルモジュール rtl8xxxu はUSB接続無線LAN子機用のドライバだけど、Realtek製の複数のチップに対応していて、RTL8192CU もサポートしている。RTL8192CU を使っている手持ちの無線LAN子機、ELECOM WDC-300SU2S (Vender ID = 056e, Product ID = 4009)に対しても、rtl8xxxu を使えたらいいのだけど…。どうにかならないものかと少し調べていた。
◎ 対応機器を確認 :
以下を打てば、rtl8xxxu がサポートしている機器の一覧が出てくる。
対応している機器一覧の中に、ベンダーID 056e の無線LAN子機があるのか確認。
"usb:vXXXXpYYYY" と書かれてたら、vXXXX がベンダーIDで、pYYYY がプロダクトIDなのだろう。たぶん。上の事例だと、ベンダーIDが 056e、プロダクトIDが 4008 の機器もサポートしていることが分かる。
ググったところ、ベンダーID 056e、プロダクトID 4008 は、ELECOM WDC-150SU2MBK らしい。Realtek RTL8188EU? RTL8188EUS? を使ってる模様。
_ELECOMのWDC-150SU2MをZYNQのLinuxから使う: なひたふJTAG日記
_古いRaspberryPiにWifiアダプターを付ける buster - Qiita
rtl8xxxu の core.c を眺めてみたら、そのあたりの記述があった。056e で検索すると記述されてる場所が分かる。dev_table の中で、「/* Elecom WDC-150SU2M */」とコメントが書いてある。
_rtl8xxxu/core.c at main - a5a5aa555oo/rtl8xxxu - GitHub
_core.c source code - linux/drivers/net/wireless/realtek/rtl8xxxu/core.c - Codebrowser
しかし、今回使いたい ELECOM WDC-300SU2SWH (WDC-300SU2S) は、IDが "056e 4009" なので…。惜しい。"056e 4008" と一緒に "056e 4009" も登録されていたら WDC-300SU2S に対して rtl8xxxu がすんなり使えたのかもしれない。
modinfo -F alias rtl8xxxu
対応している機器一覧の中に、ベンダーID 056e の無線LAN子機があるのか確認。
$ modinfo -F alias rtl8xxxu | grep -i 056e usb:v056Ep4008d*dc*dsc*dp*icFFiscFFipFFin*
"usb:vXXXXpYYYY" と書かれてたら、vXXXX がベンダーIDで、pYYYY がプロダクトIDなのだろう。たぶん。上の事例だと、ベンダーIDが 056e、プロダクトIDが 4008 の機器もサポートしていることが分かる。
ググったところ、ベンダーID 056e、プロダクトID 4008 は、ELECOM WDC-150SU2MBK らしい。Realtek RTL8188EU? RTL8188EUS? を使ってる模様。
_ELECOMのWDC-150SU2MをZYNQのLinuxから使う: なひたふJTAG日記
_古いRaspberryPiにWifiアダプターを付ける buster - Qiita
rtl8xxxu の core.c を眺めてみたら、そのあたりの記述があった。056e で検索すると記述されてる場所が分かる。dev_table の中で、「/* Elecom WDC-150SU2M */」とコメントが書いてある。
_rtl8xxxu/core.c at main - a5a5aa555oo/rtl8xxxu - GitHub
_core.c source code - linux/drivers/net/wireless/realtek/rtl8xxxu/core.c - Codebrowser
しかし、今回使いたい ELECOM WDC-300SU2SWH (WDC-300SU2S) は、IDが "056e 4009" なので…。惜しい。"056e 4008" と一緒に "056e 4009" も登録されていたら WDC-300SU2S に対して rtl8xxxu がすんなり使えたのかもしれない。
◎ new_idファイルがあれば違ったのだろうか :
rtl8xxxu をロードした際に、/sys/bus/usb/drivers/ に rtl8xxxu/new_id というファイルが作られるようなら、そこにIDを追記することで対応できそうなのだけど…。rtl8xxxu は何故か new_id というファイルを作らない…。
そこでふと、core.c のソースを眺めているうちに気が付いた。rtl8xxxu は仕組みからして、new_idファイルを使った対応デバイス追加指定が難しいのではないか…?
rtl8xxxu には複数のチップのドライバが含まれていて、dev_table という配列の中に、「このベンダーID+プロダクトIDは、このチップを使っている」という情報が列挙してある。
例えば、前述の ELECOM WDC-150SU2MBK、"056e 4008" の場合、以下の記述になっていて、rtl8188eu が使われることも指定されている。
これがもし、rtl8192cu 等のドライバなら、new_idファイルに "ベンダーID プロダクトID" を追記するだけで、「このベンダーID+プロダクトIDは、俺(rtl8192cuドライバ)が処理を受け持つ」と指定できるけど…。
rtl8xxxu の場合、"ベンダーID プロダクトID" の情報だけでは足りない。複数のチップに対応しているので、そのIDに対してどのチップドライバが使われるべきか、それについても指定しないといけない。となると、従来の new_id ファイルの記述だけでは対応できないから、rtl8xxxu は new_idファイルを作っていない、ということなのかもしれない。
なら、どうするか。ソースを修正してビルドし直すしかないよな…。でも、そのビルドの仕方が分からない…。
そこでふと、core.c のソースを眺めているうちに気が付いた。rtl8xxxu は仕組みからして、new_idファイルを使った対応デバイス追加指定が難しいのではないか…?
rtl8xxxu には複数のチップのドライバが含まれていて、dev_table という配列の中に、「このベンダーID+プロダクトIDは、このチップを使っている」という情報が列挙してある。
例えば、前述の ELECOM WDC-150SU2MBK、"056e 4008" の場合、以下の記述になっていて、rtl8188eu が使われることも指定されている。
/* Elecom WDC-150SU2M */
{USB_DEVICE_AND_INTERFACE_INFO(0x056e, 0x4008, 0xff, 0xff, 0xff),
.driver_info = (unsigned long)&rtl8188eu_fops},
これがもし、rtl8192cu 等のドライバなら、new_idファイルに "ベンダーID プロダクトID" を追記するだけで、「このベンダーID+プロダクトIDは、俺(rtl8192cuドライバ)が処理を受け持つ」と指定できるけど…。
rtl8xxxu の場合、"ベンダーID プロダクトID" の情報だけでは足りない。複数のチップに対応しているので、そのIDに対してどのチップドライバが使われるべきか、それについても指定しないといけない。となると、従来の new_id ファイルの記述だけでは対応できないから、rtl8xxxu は new_idファイルを作っていない、ということなのかもしれない。
なら、どうするか。ソースを修正してビルドし直すしかないよな…。でも、そのビルドの仕方が分からない…。
[ ツッコむ ]
#2 [nitijyou] システム手帳が売ってないか探してた
親父さんから頼まれてたシステム手帳っぽいものが近所で購入できないか、あちこちの店に回って探してみた。ダイユーエイト須賀川西店、ワッツウィズ須賀川西ダイユーエイト店、ダイユーエイト須賀川東店、ダイソーメガステージ須賀川店を回って探してみたけれど、それらしい商品は見当たらなかった。
ワッツはどうだか知らないけれど、ダイソーでは数年前に売られていたという話を見かけた。ただ、今現在売ってないのは仕方ない気もする。100円ショップの各商品とは、一期一会に近いものがあるし…。
ホームセンター内で商品が見つからないのも、これまた仕方ない気もする。外側(バインダー)だけでも、9,900円とか14,800円とかそのぐらいするけれど、そんな値段の商品が次々に売れていくとも思えないので、そうなると店頭にはそもそも置かないよな…。
ワッツはどうだか知らないけれど、ダイソーでは数年前に売られていたという話を見かけた。ただ、今現在売ってないのは仕方ない気もする。100円ショップの各商品とは、一期一会に近いものがあるし…。
ホームセンター内で商品が見つからないのも、これまた仕方ない気もする。外側(バインダー)だけでも、9,900円とか14,800円とかそのぐらいするけれど、そんな値段の商品が次々に売れていくとも思えないので、そうなると店頭にはそもそも置かないよな…。
[ ツッコむ ]
以上、1 日分です。