mieki256's diary



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 がサポートしている機器の一覧が出てくる。

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 が使われることも指定されている。

/* 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ファイルを作っていない、ということなのかもしれない。

なら、どうするか。ソースを修正してビルドし直すしかないよな…。でも、そのビルドの仕方が分からない…。

以上です。

過去ログ表示

Prev - 2025/08 - Next
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project