fix: align USB logging defaults and device ID with Radxa

This commit is contained in:
Shen Mintao committed 2026-10-23 15:54:55 +08:00
1 parent 5327c777d0
commit 57515a5e3d
4 files changed
+58 -2

No files matched your search

+55
View File
@@ -15,6 +15,9 @@ This driver is for the AIC8800D80 chipset, supported by devices such as the Tend
> kernel's standard `btusb` driver. After switching branches, rerun > kernel's standard `btusb` driver. After switching branches, rerun
> `sudo ./install.sh` and reboot; switching the Git branch alone does not > `sudo ./install.sh` and reboot; switching the Git branch alone does not
> replace the firmware already installed under `/lib/firmware`. > replace the firmware already installed under `/lib/firmware`.
>
> If `chip_mcu_id` is missing from the log, enable
> [diagnostic logging](#diagnostic-logging) and repeat device initialization.
Added support for devices with Vendor ID 368B (tested). Added support for devices with Vendor ID 368B (tested).
@@ -180,6 +183,58 @@ If the device is still not active, check the kernel logs for any errors related
sudo dmesg sudo dmesg
``` ```
### Diagnostic Logging
Both `aic8800_fdrv` and `aic_load_fw` default to `aicwf_dbg_level=1`
(`LOGERROR`), matching
[Radxa's logging default](https://github.com/radxa-pkg/aic8800/blob/fce88024ed40279def034e203128e0892fdbcac3/debian/patches/fix-Lower-the-debugging-log-level.patch).
This changes the driver's log mask; it does not remove the detailed log
statements or suppress direct `printk()` / `dev_err()` output.
Some chip-revision, firmware-version and initialization messages use
`LOGINFO`. Enable detailed logging before reproducing a startup failure or
checking `chip_mcu_id` for branch selection. Messages suppressed earlier
cannot be recovered by changing the mask afterward.
For modules that are already loaded, enable detailed logs without rebuilding:
```bash
echo 527 | sudo tee /sys/module/aic8800_fdrv/parameters/aicwf_dbg_level
echo 15 | sudo tee /sys/module/aic_load_fw/parameters/aicwf_dbg_level
sudo dmesg -w
```
The Wi-Fi mask `527` (`0x20f`) enables ERROR, INFO, TRACE, DEBUG and FW;
the loader mask `15` (`0x0f`) enables ERROR, INFO, TRACE and DEBUG.
Reproduce the problem, then save the kernel log with
`sudo journalctl -k -b --no-pager` or `sudo dmesg`.
To capture messages from module initialization, set the options before the
modules are loaded:
```bash
sudo tee /etc/modprobe.d/aic8800-debug.conf >/dev/null <<'EOF'
options aic8800_fdrv aicwf_dbg_level=527
options aic_load_fw aicwf_dbg_level=15
EOF
```
Reload both modules or reboot, then reproduce the device initialization.
If the modules load from an initramfs, regenerate that initramfs using your
distribution's procedure so it includes these options.
After collecting the logs, remove the temporary
`/etc/modprobe.d/aic8800-debug.conf` file and restore the running modules'
default masks:
```bash
echo 1 | sudo tee /sys/module/aic8800_fdrv/parameters/aicwf_dbg_level
echo 1 | sudo tee /sys/module/aic_load_fw/parameters/aicwf_dbg_level
```
If the options were included in an initramfs, regenerate it after removing
the configuration as well.
### Bluetooth on Combo Adapters ### Bluetooth on Combo Adapters
Bluetooth support does not require a separate AIC transport module. After Bluetooth support does not require a separate AIC transport module. After
+1
View File
@@ -32,6 +32,7 @@
#define USB_PRODUCT_ID_AIC8801 0x8801 #define USB_PRODUCT_ID_AIC8801 0x8801
#define USB_PRODUCT_ID_AIC8800DC 0x88dc #define USB_PRODUCT_ID_AIC8800DC 0x88dc
#define USB_PRODUCT_ID_AIC8800DW 0x88dd #define USB_PRODUCT_ID_AIC8800DW 0x88dd
#define USB_PRODUCT_ID_AIC8800DE 0x88de
#define USB_PRODUCT_ID_AIC8800D81 0x8d81 #define USB_PRODUCT_ID_AIC8800D81 0x8d81
#define USB_PRODUCT_ID_AIC8800D81X2 0x8d91 #define USB_PRODUCT_ID_AIC8800D81X2 0x8d91
#define USB_PRODUCT_ID_AIC8800D89X2 0x8d99 #define USB_PRODUCT_ID_AIC8800D89X2 0x8d99
+1 -1
View File
@@ -548,7 +548,7 @@ static const int rwnx_hwq2uapsd[NL80211_NUM_ACS] = {
struct semaphore aicwf_deinit_sem; struct semaphore aicwf_deinit_sem;
atomic_t aicwf_deinit_atomic; atomic_t aicwf_deinit_atomic;
int aicwf_dbg_level = LOGERROR|LOGINFO|LOGFW; int aicwf_dbg_level = LOGERROR;
module_param(aicwf_dbg_level, int, 0660); module_param(aicwf_dbg_level, int, 0660);
#ifdef CONFIG_DYNAMIC_PWR #ifdef CONFIG_DYNAMIC_PWR
int dynamic_pwr = 1; int dynamic_pwr = 1;
@@ -20,7 +20,7 @@ int adap_test = 0;
char paringid[100]; char paringid[100];
int n_para = 1; int n_para = 1;
int ble_scan_wakeup_reboot_time = 1000; int ble_scan_wakeup_reboot_time = 1000;
int aicwf_dbg_level = LOGERROR|LOGINFO|LOGDEBUG|LOGTRACE; int aicwf_dbg_level = LOGERROR;
int flash_erase_len = 0x400000; int flash_erase_len = 0x400000;
uint32_t ad_data_filter_mask = 0; uint32_t ad_data_filter_mask = 0;
uint32_t gpio_num = 2;//default select gpiob2 for fw_wakeup_host uint32_t gpio_num = 2;//default select gpiob2 for fw_wakeup_host