MediaTek CDC ECM Data →

MediaTek’s reference design used the CDC Ethernet Control Model —a standard USB class. On Linux, it worked instantly. On macOS, it worked after a kext. But on Windows 10? Windows expected a specific CDC subclass, or worse, a proprietary driver with a signed INF.

He opened a text editor and wrote:

And Leo? He still doesn't trust the yellow exclamation mark.

Windows 10 ships with cdc_ecm.inf , but it’s notoriously picky. It demands exact interface associations and will reject the device if the endpoint descriptors are one byte off. Leo’s gateway had three interfaces: a control interface, a data interface, and a third for debugging. Windows saw the third interface and threw a "Code 10" error: Device cannot start .

He closed the Device Manager, leaned back, and whispered to the empty lab: "Handshake accepted."

After three weeks of back-and-forth with MediaTek’s FAE, Leo discovered the dirty secret: the MTK chip was toggling a "remote wakeup" flag incorrectly. The Windows CDC driver interpreted this as a power state fault. Leo wrote a small filter driver—a shim—that intercepted the IRPs and suppressed the wakeup feature until the network session was idle.

But it wasn't enough. Windows 10’s driver signing enforcement was the final boss. Leo had to boot into "Disable Driver Signature Enforcement" or submit the driver to Microsoft’s Hardware Dev Center for attestation.

[MediaTek.AddReg] HKR, NDI, HardwareID, 0, "USB\VID_0E8D&PID_7663"

The icon turned green. The gateway got an IP. Leo pinged 8.8.8.8.

Leo couldn’t change the firmware—the MTK chip was already in mass production. He had to write a custom INF file that would force Windows to bind its generic usbnet driver to the MediaTek’s specific Vendor ID (0x0E8D) and Product ID.