bt_coex_active=N 和 bt_coex_active=1 的区别

mth*_*17u 3 wireless bluetooth iwlwifi

bt_coex_active=N和 和有bt_coex_active=1什么区别?

Rin*_*ind 7

bt_coex_active
Run Code Online (Sandbox Code Playgroud)

是蓝牙的一个选项,也是无线驱动程序的一部分(iwlegacy英特尔 PRO/无线 3945 和 WiFi Link 4965 设备)。

它用于同时启用 wifi 和蓝牙。一些并不总是有效的东西。

  • 0 表示不活动(或false
  • 1 表示活动(或true

有效选项列于

/sys/module/[module name]/parameters/[optionname]
Run Code Online (Sandbox Code Playgroud)

作为使用 iwlwifi 的示例:

/sys/module/iwlwifi/parameters 
Run Code Online (Sandbox Code Playgroud)

它显示bt_coex_active: Y。所以 N 或 0 将处于非活动状态,而 Y 或 1 将处于活动状态。


chi*_*555 7

除了 Rinzwind 的好回答之外,我还会添加一些额外的细节。

bt_coex_active=N 和 bt_coex_active=1 之间的区别在于,其中之一可能不正确,因此无效。

首先,一些背景。可以在 modinfo 中找到用于更改内核驱动程序行为的可用和可操作参数。例如,以下是从modinfo iwlwifi英特尔无线设备的通用驱动程序中找到的参数:

parm:           swcrypto:using crypto in software (default 0 [hardware]) (int)
parm:           11n_disable:disable 11n functionality, bitmap: 1: full, 2: disable agg TX, 4: disable agg RX, 8 enable agg TX (uint)
parm:           amsdu_size:amsdu size 0: 12K for multi Rx queue devices, 4K for other devices 1:4K 2:8K 3:12K (default 0) (int)
parm:           fw_restart:restart firmware in case of error (default true) (bool)
parm:           antenna_coupling:specify antenna coupling in dB (default: 0 dB) (int)
parm:           nvm_file:NVM file name (charp)
parm:           d0i3_disable:disable d0i3 functionality (default: Y) (bool)
parm:           lar_disable:disable LAR functionality (default: N) (bool)
parm:           uapsd_disable:disable U-APSD functionality bitmap 1: BSS 2: P2P Client (default: 3) (uint)
parm:           bt_coex_active:enable wifi/bt co-exist (default: enable) (bool)
parm:           led_mode:0=system default, 1=On(RF On)/Off(RF Off), 2=blinking, 3=Off (default: 0) (int)
parm:           power_save:enable WiFi power management (default: disable) (bool)
parm:           power_level:default power save level (range from 1 - 5, default: 1) (int)
parm:           fw_monitor:firmware monitor - to debug FW (default: false - needs lots of memory) (bool)
parm:           d0i3_timeout:Timeout to D0i3 entry when idle (ms) (uint)
parm:           disable_11ac:Disable VHT capabilities (default: false) (bool)
parm:           remove_when_gone:Remove dev from PCIe bus if it is deemed inaccessible (default: false) (bool)
Run Code Online (Sandbox Code Playgroud)

因此,我们可以通过调用一个参数来改变驱动程序的行为;在你的情况下:

sudo modprobe -r iwlwifi
sudo modprobe iwlwifi bt_coex_active=N
Run Code Online (Sandbox Code Playgroud)

我们可以通过编写一个 conf 文件来使参数永久化。驱动程序 iwlwifi 已经有一个必需的文件,所以我们只需添加参数即可:

sudo -i
echo "options iwlwifi bt_coex_active=N" >> /etc/modprobe.d/iwlwifi.conf
exit
Run Code Online (Sandbox Code Playgroud)

> 符号表示写入和覆盖(如果需要)文件。>> 表示追加到文件中。在 iwlwifi 的情况下,我们想要“追加”。

可是等等!我们怎么知道它应该是 Y 或 N 或 1 或 0?第一个线索是该参数被列为可通过布尔表达式 (bool) 进行操作,而不是作为整数 (int)、0 或 1 进行操作。其次,我们可以通过加载驱动程序轻松找出驱动程序所期望的内容:

sudo modprobe iwlwifi
Run Code Online (Sandbox Code Playgroud)

然后检查参数值:

cat /sys/module/iwlwifi/parameters/bt_coex_active
Run Code Online (Sandbox Code Playgroud)

如果不带任何参数加载驱动程序,它将加载驱动程序的默认值;在这种情况下,Y。然后我们知道,在这种情况下,“布尔值”意味着 Y 或 N。

驱动程序是否接受 1 或 0 作为 Y 和 N 的替代?同样,我们可以通过简单地尝试来轻松检查:

sudo modprobe -r iwlwifi
sudo modprobe iwlwifi bt_coex_active=0
cat /sys/module/iwlwifi/parameters/bt_coex_active
Run Code Online (Sandbox Code Playgroud)

结果是 N,所以我们知道驱动程序被写入接受 Y 或 N 或 1 或 0。

注意: bt_coexist 参数在其他几个非英特尔驱动程序中可用。有些可能会也可能不会互换接受 Y 或 N 或 1 或 0。确定确定的唯一方法是如上所述进行验证。