openwrt / openwrt/mt76

Some MT7632U chips seem to crash the driver

Open
#459 0 comments 0 reactions 0 assignees View on GitHub

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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.