Merge pull request #104 from xuxinchun1003/fix/tp-link-0147-device-id

add TP-Link `2357:0147` (AIC8800DC) device support
This commit is contained in:
MinQ authored and GitHub committed 2026-10-08 10:49:39 +08:00
commit 1d1b8fff46
3 files changed
+15

No files matched your search

+9
View File
@@ -19,6 +19,15 @@ This driver supports AIC8800-family chipsets used by devices such as the Tenda U
Added support for devices with Vendor ID 368B (tested). Added support for devices with Vendor ID 368B (tested).
> [!NOTE]
> **Tested `2357:0147` hardware (this branch):** TP-Link AIC8800DC USB WiFi,
> `chip_id=7`, `chip_sub_id=1`, `chip_mcu_id=1` (MCU revision of *this unit*,
> readback `0x40500000 = 0x09078818`; firmware `zh Aug 08 2022 … gcf79227`).
> The USB-ID entry itself is MCU-revision-agnostic (routing to the DC path;
> mcu gating happens at runtime), but **other units sold under the same
> VID/PID may be a different MCU revision** — check the driver log against
> the branch-selection note above.
Tested on Linux kernel 6.16 with Ubuntu 25.04 and 6.1.0.27 with Debian 12. Tested on Linux kernel 6.16 with Ubuntu 25.04 and 6.1.0.27 with Debian 12.
The same driver supports Wi-Fi-only adapters and Wi-Fi/Bluetooth combo The same driver supports Wi-Fi-only adapters and Wi-Fi/Bluetooth combo
+5
View File
@@ -2367,6 +2367,10 @@ static int aicwf_usb_chipmatch(struct aic_usb_dev *usb_dev, u16_l vid, u16_l pid
} }
AICWFDBG(LOGINFO, "%s USE AIC8800D89X2\r\n", __func__); AICWFDBG(LOGINFO, "%s USE AIC8800D89X2\r\n", __func__);
return 0; return 0;
} else if (pid == USB_PRODUCT_ID_TP_AIC8800DC) {
usb_dev->chipid = PRODUCT_ID_AIC8800DC;
AICWFDBG(LOGINFO, "%s USE AIC8800DC (TP-Link 0x0147)\r\n", __func__);
return 0;
} else if ((pid == USB_PRODUCT_ID_AIC8800D80N) || } else if ((pid == USB_PRODUCT_ID_AIC8800D80N) ||
(pid == USB_PRODUCT_ID_AIC8800D80LN) || (pid == USB_PRODUCT_ID_AIC8800D80LN) ||
(pid == USB_PRODUCT_ID_AIC8800D80WN) || (pid == USB_PRODUCT_ID_AIC8800D80WN) ||
@@ -2680,6 +2684,7 @@ static struct usb_device_id aicwf_usb_id_table[] = {
{USB_DEVICE(USB_VENDOR_ID_AIC_V2, USB_PRODUCT_ID_AIC8800M80_CUS8)}, {USB_DEVICE(USB_VENDOR_ID_AIC_V2, USB_PRODUCT_ID_AIC8800M80_CUS8)},
{USB_DEVICE(USB_VENDOR_ID_AIC_V2, USB_PRODUCT_ID_AIC8800D80_UGREEN)}, {USB_DEVICE(USB_VENDOR_ID_AIC_V2, USB_PRODUCT_ID_AIC8800D80_UGREEN)},
{USB_DEVICE(USB_VENDOR_ID_TP, USB_PRODUCT_ID_MERCURY)}, {USB_DEVICE(USB_VENDOR_ID_TP, USB_PRODUCT_ID_MERCURY)},
{USB_DEVICE(USB_VENDOR_ID_TP, USB_PRODUCT_ID_TP_AIC8800DC)},
{USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_TP, USB_PRODUCT_ID_TP, 0xff, 0xff, 0xff)}, {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_TP, USB_PRODUCT_ID_TP, 0xff, 0xff, 0xff)},
#endif #endif
{} {}
+1
View File
@@ -24,6 +24,7 @@
#define USB_PRODUCT_ID_TP 0x014e #define USB_PRODUCT_ID_TP 0x014e
#define USB_PRODUCT_ID_MERCURY 0x014b #define USB_PRODUCT_ID_MERCURY 0x014b
#define USB_PRODUCT_ID_FAST 0x014f #define USB_PRODUCT_ID_FAST 0x014f
#define USB_PRODUCT_ID_TP_AIC8800DC 0x0147
#define USB_PRODUCT_ID_TENDA_U11 0x001f #define USB_PRODUCT_ID_TENDA_U11 0x001f
#define USB_PRODUCT_ID_TENDA_U11_PRO 0x0020 #define USB_PRODUCT_ID_TENDA_U11_PRO 0x0020