👽

Alienwareに付属してくる2.5GbpsイーサネットアダプターをUbuntuで使う[AW1022z]

2024/12/05に公開

はじめに

AlienwareのLaptopを買うと付属する、USB-C to RJ-45 のEthernetアダプターがあります。
型番はAW1022zです。製造はBizLinkという会社です。
AW1022z
(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"です。これはいろいろなチップに対応するドライバみたいですね。
https://www.realtek.com/Download/List?cate_id=585

Patching

ダウンロードしたr8152-2.19.2.tar.bz2を解凍しましょう。
自分はGUIのArkを使っちゃいました。

次に、以下パッチを当てます。
ダウンロードしたRealtekのドライバには、DellのベンダーIDとプロダクトIDは含まれていないためです。
https://gist.github.com/pampem/e5bf8ba1bb34a328561a0f8f726be4e5

# 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を挿して通信ができました🥰

参考文献

この記事の手法を参考にさせていただきました。ありがとうございます。
https://zenn.dev/yuyakato/articles/c15d8e5fb9edd7

ドライバのダウンロード元
https://www.realtek.com/Download/List?cate_id=585

Discussion