Alienwareに付属してくる2.5GbpsイーサネットアダプターをUbuntuで使う[AW1022z]
はじめに
AlienwareのLaptopを買うと付属する、USB-C to RJ-45 のEthernetアダプターがあります。
型番はAW1022zです。製造はBizLinkという会社です。
(A to Cのアダプタもついてきます。)
この製品について、インターネット上に全く情報がなく、なんのチップを搭載しているかも不明でした。
しかし、RTL8152を積んでいると決め打ちしてドライバをインストールしたところ、Ubuntu 22.04LTSにて動作することを確認しました。
初期状態
$ uname -a
Linux 6.8.0-49-generic #49~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Nov UTC 2 x86_64 x86_64 x86_64 GNU/Linux
$ lsusb -t -v
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/10p, 20000M/x2
ID 1d6b:0003 Linux Foundation 3.0 root hub
|__ Port 4: Dev 2, If 0, Class=Hub, Driver=hub/4p, 5000M
ID 174c:3074 ASMedia Technology Inc. ASM1074 SuperSpeed hub
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/16p, 480M
ID 1d6b:0002 Linux Foundation 2.0 root hub
|__ Port 1: Dev 2, If 3, Class=Human Interface Device, Driver=usbhid, 12M
ID 046d:c548 Logitech, Inc.
|__ Port 1: Dev 2, If 1, Class=Human Interface Device, Driver=usbhid, 12M
ID 046d:c548 Logitech, Inc.
|__ Port 1: Dev 2, If 2, Class=Human Interface Device, Driver=usbhid, 12M
ID 046d:c548 Logitech, Inc.
|__ Port 1: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 12M
ID 046d:c548 Logitech, Inc.
|__ Port 2: Dev 9, If 1, Class=CDC Data, Driver=cdc_ncm, 480M
ID 413c:b097 Dell Computer Corp.
|__ Port 2: Dev 9, If 0, Class=Communications, Driver=cdc_ncm, 480M
ID 413c:b097 Dell Computer Corp.
当方の環境ではAW1022zがdevice 9で認識されていることがわかりますが、Driver=cdc_ncm (汎用のNIC用ドライバ)となっており、このままでは動作しません。
また、ここでID 413c:b097より、DellのベンダーID = 413c, プロダクトID = b097ということがわかりました。
あとでこの情報を使ってRealtekのドライバにパッチを当てていきます。
ドライバのダウンロードとインストール
Download
こちらよりRealtekのドライバをLocalにひっぱってきます。Unix(Linux)セクションの、"USB NIC Linux driver for kernel up to 6.10"です。これはいろいろなチップに対応するドライバみたいですね。
Patching
ダウンロードしたr8152-2.19.2.tar.bz2を解凍しましょう。
自分はGUIのArkを使っちゃいました。
次に、以下パッチを当てます。
ダウンロードしたRealtekのドライバには、DellのベンダーIDとプロダクトIDは含まれていないためです。
# Under r8152 directory
# r8152.cのパッチをダウンロードし適用
$ wget https://gist.githubusercontent.com/pampem/e5bf8ba1bb34a328561a0f8f726be4e5/raw/1894af94f86aed1e466737c5ecd7905903c7858d/r8152.c.patch
$ patch -u < r8152.c.patch
patching file r8152.c
# 50-usb-realtek-net.rulesのパッチをダウンロードし適用
$ wget https://gist.githubusercontent.com/pampem/e5bf8ba1bb34a328561a0f8f726be4e5/raw/1894af94f86aed1e466737c5ecd7905903c7858d/50-usb-realtek-net.rules.patch
$ patch -u < 50-usb-realtek-net.rules.patch
patching file 50-usb-realtek-net.rules
Build
# Under r8152 directory
$ make
# Ensure no error
# DellのベンダーIDが含まれていることを確認する。
$ modinfo ./r8152.ko | grep -i 413c
alias: usb:v413CpB097d*dc*dsc*dp*ic02isc0Dip00in*
alias: usb:v413CpB097d*dc*dsc*dp*ic02isc06ip00in*
alias: usb:v413CpB097d*dc*dsc*dp*icFFisc*ip*in*
Install
# Under r8152 directory
$ sudo make install
*ちなみに、secure bootが有効だとmodprobeができないみたいでエラーが出たので、secure bootを無効化しました。
# ルールファイルをインストール
$ sudo cp 50-usb-realtek-net.rules /etc/udev/rules.d/
# 環境を整える
$ sudo depmod -a
$ sudo update-initramfs -u
$ sudo service udev restart
Ensure it works
まずはデバイスを抜き差しします。
ifconfig
で新しいデバイスが生えているのを確認できたらOKだと思います。
my env
$ inxi -n
Network:
Device-1: Realtek RTL8125 2.5GbE driver: r8169
IF: enp4s0 state: up speed: 1000 Mbps duplex: full mac: 9c:6b:00:0a:8a:9c
Device-2: Dell USB 10/100/1G/2.5G LAN type: USB driver: r8152
IF: enx0c379699a270 state: down mac: 0c:37:96:99:a2:70
Device-3: TP-Link 802.11ac WLAN Adapter type: USB driver: N/A
IF-ID-1: br-355d4fea60c2 state: down mac: 02:42:54:13:a4:74
IF-ID-2: docker0 state: down mac: 02:42:87:eb:82:54
$ sudo ethtool enx0c379699a270
Settings for enx0c379699a270:
Supported ports: [ MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
2500baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Speed: Unknown!
Duplex: Unknown! (255)
Auto-negotiation: on
Port: MII
PHYAD: 32
Transceiver: internal
Supports Wake-on: pumbg
Wake-on: g
Current message level: 0x00007fff (32767)
drv probe link timer ifdown ifup rx_err tx_err tx_queued intr tx_done rx_status pktdata hw wol
Link detected: no
Mid-360を挿して通信ができました🥰
参考文献
この記事の手法を参考にさせていただきました。ありがとうございます。
ドライバのダウンロード元
Discussion