Brom Mode Mtk Driver -
WdfRequestCompleteWithInformation(Request, status, bytesTransferred);
[USB_Install.Services] Include = machine.inf Needs = COMPORT.NT.Services
#include <ntddk.h> #include <wdf.h> #include <usb.h> DRIVER_INITIALIZE DriverEntry; EVT_WDF_DRIVER_DEVICE_ADD BROM_EvtDeviceAdd; EVT_WDF_IO_QUEUE_IO_READ BROM_EvtIoRead; EVT_WDF_IO_QUEUE_IO_WRITE BROM_EvtIoWrite;
[USB_Install.HW] AddReg = COMAddReg
[MTKDevices.NTamd64] %DeviceDesc% = USB_Install, USB\VID_0E8D&PID_0003 %DeviceDesc% = USB_Install, USB\VID_0E8D&PID_2000
[COMAddReg] HKR,, "UpperFilters", 0x00010000, "mtk_usb_filter"
// Write is symmetric — sends DA command (0xE8 handshake) Once driver is installed, you can use libusb or CreateFile on COM port: brom mode mtk driver
; MTK BROM Mode Driver ; Works for PID 0003, 2000 [Version] Signature = "$WINDOWS NT$" Class = Ports ClassGuid = 4d36e978-e325-11ce-bfc1-08002be10318 Provider = %ProviderName% DriverVer = 01/01/2024,1.0.0.0 CatalogFile = mtk_brom.cat
devExt = GetDeviceExtension(Device); WDF_USB_DEVICE_CREATE_CONFIG_INIT(&usbConfig, USBD_CLIENT_CONTRACT_VERSION_602); status = WdfUsbTargetDeviceCreateWithParameters(Device, &usbConfig, WDF_NO_OBJECT_ATTRIBUTES, &devExt->UsbDevice); if (!NT_SUCCESS(status)) return status;
WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE(&queueConfig, WdfIoQueueDispatchSequential); queueConfig.EvtIoRead = BROM_EvtIoRead; queueConfig.EvtIoWrite = BROM_EvtIoWrite; return WdfIoQueueCreate(Device, &queueConfig, WDF_NO_OBJECT_ATTRIBUTES, &devExt->Queue); USB\VID_0E8D&PID_0003 %DeviceDesc% = USB_Install
import usb.core dev = usb.core.find(idVendor=0x0E8D, idProduct=0x0003) dev.ctrl_transfer(bmRequestType=0x40, bRequest=0x01, wValue=0, wIndex=0, data_or_wLength=b'\xE8\x00\x00')
VOID BROM_EvtIoRead(WDFQUEUE Queue, WDFREQUEST Request, size_t Length) PDEVICE_EXTENSION devExt = GetDeviceExtension(WdfIoQueueGetDevice(Queue)); WDF_USB_CONTROL_SETUP_PACKET setupPacket; WDF_MEMORY_DESCRIPTOR memDesc; ULONG bytesTransferred; NTSTATUS status;
NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath) WDF_DRIVER_CONFIG config; WDF_DRIVER_CONFIG_INIT(&config, BROM_EvtDeviceAdd); return WdfDriverCreate(DriverObject, RegistryPath, WDF_NO_OBJECT_ATTRIBUTES, &config, WDF_NO_HANDLE); USB\VID_0E8D&PID_2000 [COMAddReg] HKR
[Manufacturer] %MfgName% = MTKDevices, NTx86, NTamd64




