Some MT7632U chips seem to crash the driver
Nobody has claimed this yet.
- Dominant language
- C
- Stars
- 888
- Forks
- 436
- PR merge metrics
- No merged PRs in 30d
Description
Lately I've been testing some older MT7632U modules, and I noticed a strange behaviour. One variant of the module seem to work just fine, the interface comes up, and I can connect to networks. However, plugging another variant of the almost identical module seems to outright crash the driver, and no USB devices can be recognized anymore until I restart the device. I say almost identical because as far as I'm aware, they only differ on the antenna part.
Working: https://fccid.io/PPQ-WCBN4510R/Users-Manual/Users-Manual-32U2M-2933307
Problematic: https://fccid.io/PPQ-WCBN4510R/Users-Manual/Users-Manual-32U-2933308
Here are the output I get for the two modules respectively:
Working module:
[ 268.014427] usb 1-1.1: new high-speed USB device number 7 using xhci-hcd
[ 268.215756] usb 1-1.1: New USB device found, idVendor=0e8d, idProduct=7632, bcdDevice= 1.00
[ 268.215777] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 268.215788] usb 1-1.1: Product: BT+WIFI
[ 268.215799] usb 1-1.1: Manufacturer: MediaTek Inc.
[ 268.215809] usb 1-1.1: SerialNumber: 000000000
[ 268.403337] usb 1-1.1: reset high-speed USB device number 7 using xhci-hcd
[ 268.604451] mt76x2u 1-1.1:1.0: ASIC revision: 76020044
[ 268.643331] mt76x2u 1-1.1:1.0: ROM patch build: 20141115060606a
[ 268.814756] mt76x2u 1-1.1:1.0: Firmware Version: 0.0.00
[ 268.814776] mt76x2u 1-1.1:1.0: Build: 1
[ 268.814786] mt76x2u 1-1.1:1.0: Build Time: 201507311614____
[ 269.647979] ieee80211 phy2: Selected rate control algorithm 'minstrel_ht'
Problematic module:
[ 641.544973] usb 1-1.1: new high-speed USB device number 8 using xhci-hcd
[ 641.746891] usb 1-1.1: New USB device found, idVendor=0e8d, idProduct=7632, bcdDevice= 1.00
[ 641.746912] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 641.746923] usb 1-1.1: Product: BT+WIFI
[ 641.746933] usb 1-1.1: Manufacturer: MediaTek Inc.
[ 641.746943] usb 1-1.1: SerialNumber: 000000000
[ 641.991389] usb 1-1.1: reset high-speed USB device number 8 using xhci-hcd
[ 642.214857] Unable to handle kernel paging request at virtual address dead000000000122
[ 642.217189] Mem abort info:
[ 642.219893] ESR = 0x96000044
[ 642.223686] EC = 0x25: DABT (current EL), IL = 32 bits
[ 642.228838] SET = 0, FnV = 0
[ 642.232020] EA = 0, S1PTW = 0
[ 642.235209] Data abort info:
[ 642.238189] ISV = 0, ISS = 0x00000044
[ 642.242019] CM = 0, WnR = 1
[ 642.244733] [dead000000000122] address between user and kernel address ranges
[ 642.251969] Internal error: Oops: 96000044 [#1] PREEMPT SMP
[ 642.257413] Modules linked in: mt76x2u mt76x2_common mt76x02_usb mt76_usb mt76x02_lib mt76 mac80211 fuse bnep hid_logitech_hidpp zram hid_logitech_dj crct10dif_ce joydev nls_ascii uas hci_uart btqca btrtl cfg80211 btbcm btintel lima gpu_sched dw_hdmi_cec bluetooth v4l2_mem2mem videobuf2_dma_contig videobuf2_memops videobuf2_v4l2 ecdh_generic ecc videobuf2_common rfkill rc_core videodev ao_cec mc display_connector sch_fq_codel ip_tables x_tables ipv6 [last unloaded: 8189fs]
[ 642.300975] CPU: 0 PID: 198 Comm: kworker/0:3 Tainted: G C 5.9.0-rc6-arm-64 #20.09
[ 642.309763] Hardware name: ----removed----
[ 642.317116] Workqueue: usb_hub_wq hub_event
[ 642.321240] pstate: 60000005 (nZCv daif -PAN -UAO BTYPE=--)
[ 642.326763] pc : destroy_workqueue+0x17c/0x248
[ 642.331156] lr : destroy_workqueue+0x168/0x248
[ 642.335551] sp : ffff800010e3b5d0
[ 642.338829] x29: ffff800010e3b5d0 x28: ffff00002b268800
[ 642.344090] x27: 0000000000000000 x26: ffff80000a418120
[ 642.349351] x25: ffff80000a41a070 x24: ffff80000a41a000
[ 642.354612] x23: ffff00002bce3e20 x22: ffff800012a35420
[ 642.359873] x21: ffff00002bce3e00 x20: ffff00002bce3d90
[ 642.365135] x19: ffff0000267e2558 x18: 0000000000000000
[ 642.370395] x17: 0000000000000000 x16: 0000000000000000
[ 642.375657] x15: 00000001e750c906 x14: 000000000000018d
[ 642.380918] x13: 00000000000001ba x12: 0000000000000001
[ 642.386179] x11: 0000000000000000 x10: 0000000000000001
[ 642.391441] x9 : 00000000000001ba x8 : 0000000000000000
[ 642.396699] x7 : 00000000000000f0 x6 : 0000000000000001
[ 642.401961] x5 : ffff00003fd9e0c0 x4 : 0000000000000000
[ 642.407222] x3 : dead000000000122 x2 : ffff800012a35560
[ 642.412483] x1 : dead000000000122 x0 : ffff800012a35458
[ 642.417745] Call trace:
[ 642.420163] destroy_workqueue+0x17c/0x248
[ 642.424233] mt76_free_device+0x20/0x68 [mt76]
[ 642.428618] mt76x2u_probe+0x80/0x130 [mt76x2u]
[ 642.433101] usb_probe_interface+0xf0/0x288
[ 642.437240] really_probe+0xe4/0x3b0
[ 642.440775] driver_probe_device+0x58/0xb8
[ 642.444828] __device_attach_driver+0x84/0xc8
[ 642.449143] bus_for_each_drv+0x78/0xc8
[ 642.452936] __device_attach+0xf0/0x150
[ 642.456731] device_initial_probe+0x14/0x20
[ 642.460872] bus_probe_device+0x9c/0xa8
[ 642.464666] device_add+0x370/0x748
[ 642.468117] usb_set_configuration+0x494/0x8b0
[ 642.472517] usb_generic_driver_probe+0x50/0x90
[ 642.477001] usb_probe_device+0x38/0xc0
[ 642.480794] really_probe+0xe4/0x3b0
[ 642.484331] driver_probe_device+0x58/0xb8
[ 642.488384] __device_attach_driver+0x84/0xc8
[ 642.492698] bus_for_each_drv+0x78/0xc8
[ 642.496492] __device_attach+0xf0/0x150
[ 642.500287] device_initial_probe+0x14/0x20
[ 642.504428] bus_probe_device+0x9c/0xa8
[ 642.508222] device_add+0x370/0x748
[ 642.511672] usb_new_device+0x218/0x608
[ 642.515467] hub_event+0x914/0x12d8
[ 642.518920] process_one_work+0x1a0/0x328
[ 642.522886] worker_thread+0x4c/0x420
[ 642.526509] kthread+0x140/0x160
[ 642.529700] ret_from_fork+0x10/0x34
[ 642.533239] Code: f9000441 d2802443 9100e2c0 f2fbd5a3 (f9000022)
[ 642.539274] ---[ end trace f557ec64723a2c2b ]---
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the mt76x2u_probe and mt76_free_device paths named in the call trace, then reproduce the failure with both MT7632U module variants and compare probe behavior. Use the reported kernel oops and working-module logs to identify the failing initialization or cleanup path; done means the problematic variant no longer crashes the driver or leaves USB unusable.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c, linux
- Domain
- networking, operating-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100