0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Arch Linuxの自分用雑録

Last updated at Posted at 2024-12-03

需要は考慮していません。

AURにあるmozc-utのビルドエラー (2024/12/03)

bazelがqt_linuxリポジトリのビルドエラーを出す場合、pkgconfをインストールするとビルドが通りました。

ERROR: Traceback (most recent call last):
        File "/home/someone/.cache/bazel/_bazel_someone/7add4d5dc3f5244fd83059338167b91c/external/_main~_repo_rules~qt_linux/BUILD.bazel", line 8, column 16, in <toplevel>
                hdrs = glob([
Error in glob: pattern cannot be empty
ERROR: /home/someone/.cache/bazel/_bazel_someone/7add4d5dc3f5244fd83059338167b91c/external/_main~_repo_rules~qt_linux/BUILD.bazel: no such target '@@_main~_repo_rules~qt_linux//:qt_linux': target 'qt_linux' not declared in package '' defined by /home/someone/.cache/bazel/_bazel_someone/7add4d5dc3f5244fd83059338167b91c/external/_main~_repo_rules~qt_linux/BUILD.bazel
ERROR: /home/someone/.cache/yay/mozc-ut/src/mozc/src/gui/tool/BUILD.bazel:123:18: no such target '@@_main~_repo_rules~qt_linux//:qt_linux': target 'qt_linux' not declared in package '' defined by /home/someone/.cache/bazel/_bazel_someone/7add4d5dc3f5244fd83059338167b91c/external/_main~_repo_rules~qt_linux/BUILD.bazel and referenced by '//gui/tool:mozc_tool'
ERROR: Analysis of target '//gui/tool:mozc_tool' failed; build aborted: Analysis failed

情報ソースはAURのmozcパッケージのコメントです。
https://aur.archlinux.org/packages/mozc#comment-985540

WI-U3-2400XE2のドライバの導入 (2025/01/09)

BUFFALOのWi-FiアダプタであるWI-U3-2400XE2のドライバ導入の手順です。

  1. pacman -S usb_modeswitchによりusb_modeswitchを導入する
  2. cymeあるいはlsusbによりBUFFALOのWi-Fiアダプタとして認識されるようになることを確認する
    変化がない場合はアダプタを挿し直す
  3. AURからRTL8852CUドライバのリポジトリを取得
    git clone 'https://aur.archlinux.org/rtl8852cu-git.git'
    複数のカーネルを使うユーザはrtl8852cu-dkms-gitの方がいいかも
  4. pacman -S bcによりbcをインストールする
    これがないと次の手順でビルドに失敗する
  5. PKGBUILDsourceを以下のように書き換えてmakepkg -si
PKGBUILD.diff
makedepends=('git' 'make' 'linux-headers')
conflicts=("${_pkgbase}" "${_pkgbase}-dkms-git")
-source=("git+https://github.com/lwfinger/rtw8852cu.git"
+source=("git+https://github.com/0xNOY/rtw8852cu.git"
        "$pkgname.install")
install=$pkgname.install

USB 3.0で動作させる方法

単にドライバを導入しただけだとUSB 2.0での動作となってしまい、Wi-Fiアダプタ本来の性能を十全に発揮できません。
ドライバをカーネルモジュールとしてロードする際に、rtw_switch_usb_mode=1を指定することでをUSB 3.0での動作となります。

sudo modprobe 8852cu rtw_switch_usb_mode=1

常にUSB 3.0で動作させたい場合は/etc/modprobe.d/内に設定ファイルを作成すればよいです。

/etc/modprobe.d/10-8852cu.conf
options 8852cu rtw_switch_usb_mode=1

以下、自分用の解説。

このアダプタは初期状態ではCD-ROMとして認識されているので、usb_modeswitchによりモードの切り替えを行う必要があります。

初期状態でのlsusb出力
Bus 003 Device 003: ID 0bda:1a2b Realtek Semiconductor Corp. RTL8188GU 802.11n WLAN Adapter (Driver CDROM Mode)
Device Descriptor:
...(略)...
  idVendor          0x0bda Realtek Semiconductor Corp.
  idProduct         0x1a2b RTL8188GU 802.11n WLAN Adapter (Driver CDROM Mode)
モード切り替え後のlsusb出力
Bus 003 Device 003: ID 0411:03a6 BUFFALO INC. (formerly MelCo., Inc.) 802.11ax WLAN Adapter
Device Descriptor:
...(略)...
  idVendor          0x0411 BUFFALO INC. (formerly MelCo., Inc.)
  idProduct         0x03a6 [unknown]

usb_modeswitchパッケージにはudevルールが含まれており、このアダプタを検出するとモードの切り替えが行われます。

/lib/udev/rules.d/40-usb_modeswitch.rules
# D-Link DWA-171 Wifi Dongle
ATTR{idVendor}=="0bda", ATTR{idProduct}=="1a2b", RUN+="usb_modeswitch '/%k'"

AURにあるRTL8852CUドライバは以下の2つです。

上記のAURはいずれも以下のリポジトリを参照します。
https://github.com/lwfinger/rtw8852cu
しかしWI-U3-2400XE2への対応は、PRまでは作成されているもののマージはされておらず未完了です。
https://github.com/lwfinger/rtw8852cu/pull/27
そこでPR作成者がフォークしたリポジトリを使い、ドライバをビルドします。
https://github.com/0xNOY/rtw8852cu

RealtekのLinuxドライバについてインターネットで検索すると、rtw_switch_usb_modeでUSBの速度を切り替える方法について解説している情報がヒットします。
このドライバも説明はないですが、同様の方法で切り替え可能なことがソースコードから見て取れます。

os_dep/linux/usb_intf.c:L527
	/* registry not allow driver to switch usb mode */
	if (registry_par->switch_usb_mode == 0)
		goto exit;
	else if (registry_par->switch_usb_mode == 1 && pusb_data->usb_speed < RTW_USB_SPEED_SUPER)
		 ret = rtw_phl_cmd_force_usb_switch(dvobj->phl, RTW_USB_SPEED_SUPER, HW_BAND_0, PHL_CMD_DIRECTLY, 0);
	else if (registry_par->switch_usb_mode == 2 && pusb_data->usb_speed >= RTW_USB_SPEED_SUPER)
		 ret = rtw_phl_cmd_force_usb_switch(dvobj->phl, RTW_USB_SPEED_HIGH, HW_BAND_0, PHL_CMD_DIRECTLY, 0);

802.11axでの通信が出来ない(未解決)

どういう理由か6GHz帯が利用が出来ず、802.11axによる通信が出来ません。
ドライバが使用するチャンネルをアメリカ仕様にすると6GHz帯も使えるのですが、電波法的に問題ありと思われます。

/etc/modprobe.d/10-8852cu.conf
options 8852cu rtw_switch_usb_mode=1 rtw_country_code=US

そもそも日本で使えるチャンネルが一部使えなくなるので、解決策とは言い難いです。
rtw_country_code=JPは効果無しでした。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?