diff mbox series

Bluetooth: btusb: Ignore Nintendo Wii module

Message ID 20241122051947.716313-1-j.alan.jones@pm.me (mailing list archive)
State Superseded
Headers show
Series Bluetooth: btusb: Ignore Nintendo Wii module | expand

Checks

Context Check Description
tedd_an/pre-ci_am success Success
tedd_an/SubjectPrefix success Gitlint PASS
tedd_an/BuildKernel success BuildKernel PASS
tedd_an/CheckAllWarning success CheckAllWarning PASS
tedd_an/CheckSparse success CheckSparse PASS
tedd_an/BuildKernel32 success BuildKernel32 PASS
tedd_an/TestRunnerSetup success TestRunnerSetup PASS
tedd_an/TestRunner_l2cap-tester success TestRunner PASS
tedd_an/TestRunner_iso-tester fail TestRunner_iso-tester: WARNING: possible circular locking dependency detected
tedd_an/TestRunner_bnep-tester success TestRunner PASS
tedd_an/TestRunner_mgmt-tester fail TestRunner_mgmt-tester: Total: 492, Passed: 487 (99.0%), Failed: 1, Not Run: 4
tedd_an/TestRunner_rfcomm-tester success TestRunner PASS
tedd_an/TestRunner_sco-tester success TestRunner PASS
tedd_an/TestRunner_ioctl-tester success TestRunner PASS
tedd_an/TestRunner_mesh-tester success TestRunner PASS
tedd_an/TestRunner_smp-tester success TestRunner PASS
tedd_an/TestRunner_userchan-tester success TestRunner PASS

Commit Message

Alan Jones Nov. 22, 2024, 5:20 a.m. UTC
The Nintendo Wii uses a BCM2045 module running proprietary firmware.
This adapter is typically managed by emulation software via the raw
interface, and is incompatible with standard Bluetooth devices.

Attempting to initialize this adapter breaks synchronization with all
previously connected Wii Remotes, requiring applications to
re-synchronize the remotes on each usage.

Fix Wii Remote re-synchronization issues with the official Nintendo Wii
Bluetooth module by ignoring this adapter.

Signed-off-by: Alan Jones <j.alan.jones@pm.me>
---
 drivers/bluetooth/btusb.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

bluez.test.bot@gmail.com Nov. 22, 2024, 5:58 a.m. UTC | #1
This is automated email and please do not reply to this email!

Dear submitter,

Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=911667

---Test result---

Test Summary:
CheckPatch                    PENDING   0.18 seconds
GitLint                       PENDING   0.21 seconds
SubjectPrefix                 PASS      0.11 seconds
BuildKernel                   PASS      24.65 seconds
CheckAllWarning               PASS      27.06 seconds
CheckSparse                   PASS      30.46 seconds
BuildKernel32                 PASS      24.66 seconds
TestRunnerSetup               PASS      435.06 seconds
TestRunner_l2cap-tester       PASS      22.33 seconds
TestRunner_iso-tester         FAIL      38.74 seconds
TestRunner_bnep-tester        PASS      4.87 seconds
TestRunner_mgmt-tester        FAIL      123.46 seconds
TestRunner_rfcomm-tester      PASS      7.58 seconds
TestRunner_sco-tester         PASS      11.66 seconds
TestRunner_ioctl-tester       PASS      10.20 seconds
TestRunner_mesh-tester        PASS      6.09 seconds
TestRunner_smp-tester         PASS      7.08 seconds
TestRunner_userchan-tester    PASS      5.11 seconds
IncrementalBuild              PENDING   0.39 seconds

Details
##############################
Test: CheckPatch - PENDING
Desc: Run checkpatch.pl script
Output:

##############################
Test: GitLint - PENDING
Desc: Run gitlint
Output:

##############################
Test: TestRunner_iso-tester - FAIL
Desc: Run iso-tester with test-runner
Output:
WARNING: possible circular locking dependency detected
Total: 124, Passed: 120 (96.8%), Failed: 0, Not Run: 4
##############################
Test: TestRunner_mgmt-tester - FAIL
Desc: Run mgmt-tester with test-runner
Output:
Total: 492, Passed: 487 (99.0%), Failed: 1, Not Run: 4

Failed Test Cases
LL Privacy - Start Discovery 2 (Disable RL)          Failed       0.190 seconds
##############################
Test: IncrementalBuild - PENDING
Desc: Incremental build with the patches in the series
Output:



---
Regards,
Linux Bluetooth
Paul Menzel Nov. 22, 2024, 8:29 a.m. UTC | #2
Dear Alan,


Thank you for your patch.

Am 22.11.24 um 06:20 schrieb Alan Jones:
> The Nintendo Wii uses a BCM2045 module running proprietary firmware.
> This adapter is typically managed by emulation software via the raw
> interface, and is incompatible with standard Bluetooth devices.
> 
> Attempting to initialize this adapter breaks synchronization with all
> previously connected Wii Remotes, requiring applications to
> re-synchronize the remotes on each usage.
> 
> Fix Wii Remote re-synchronization issues with the official Nintendo Wii
> Bluetooth module by ignoring this adapter.

Out of curiosity, is anything logged by Linux?

> Signed-off-by: Alan Jones <j.alan.jones@pm.me>
> ---
>   drivers/bluetooth/btusb.c | 3 +++
>   1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
> index e9534fbc92e3..11c9ea182ea4 100644
> --- a/drivers/bluetooth/btusb.c
> +++ b/drivers/bluetooth/btusb.c
> @@ -185,6 +185,9 @@ static const struct usb_device_id quirks_table[] = {
>   	/* Broadcom BCM2045 devices */
>   	{ USB_DEVICE(0x0a5c, 0x2045), .driver_info = BTUSB_BCM2045 },
>   
> +	/* Broadcom BCM2045 with Nintendo Wii firmware */
> +	{ USB_DEVICE(0x057E, 0x0305), .driver_info = BTUSB_IGNORE },

Could you please write the ids lowercase? Also, sort it above 0x0a5c?

The comment above the existing entry suggests it’s for all BCM2045 
devices. Could you explain, where the difference in the vendor id comes 
from?

> +
>   	/* Atheros 3011 with sflash firmware */
>   	{ USB_DEVICE(0x0489, 0xe027), .driver_info = BTUSB_IGNORE },
>   	{ USB_DEVICE(0x0489, 0xe03d), .driver_info = BTUSB_IGNORE },


Kind regards,

Paul
Alan Jones Nov. 23, 2024, 4:58 p.m. UTC | #3
Attempting on re-send via webportal: Thunderbird is chewing-up the reply-to header. If this fails to thread I'll walk-away for a bit.


Here's what happens when the module is plugged in and I press a button 
on a previously paired remote.

     [483044.866453] usb 3-4: new full-speed USB device number 47 using 
xhci_hcd
     [483045.477740] usb 3-4: New USB device found, idVendor=057e, 
idProduct=0305, bcdDevice= 1.00
     [483045.477749] usb 3-4: New USB device strings: Mfr=1, Product=2, 
SerialNumber=0
     [483045.477754] usb 3-4: Product: BCM2045A
     [483045.477757] usb 3-4: Manufacturer: Broadcom Corp
     [483047.572500] Bluetooth: hci0: Opcode 0x0c14 failed: -110

Beyond this is gets weird. The version of weird depends on the next steps.
The Nintendo stack is almost, but not quite, entirely unlike Bluetooth.


The unique vendor and product IDs are a result of the firmware payload.
In the manufacturing manual for the component there's a note regarding 
this (after firmware install):
     "USD Vender ID and product ID of nintendo module is not same as it 
of Pre-write module."

Link:
https://fccid.io/MCLJ27H002/User-Manual/Users-Manual-721663.pdf


So in theory: yes, this would apply to all BCM2045 devices re-flashed 
with Nintendo's firmware.
I don't know how feasible this actually is: to my knowledge it isn't 
widely done.
In practice, hobbyists extract the Foxconn WML-C43 or Foxconn/Panasonic 
J27H002 module from a Wii console and add the wiring to interface to a PC.

Example using a daughtercard adapter here:
https://www.abbiedoobie.com/product/bluetooth-passthrough-adapter/


Ack on requested changes; I'll send a follow-up

Alan


On Friday, November 22nd, 2024 at 12:29 AM, Paul Menzel <pmenzel@molgen.mpg.de> wrote:

> 
> 
> Dear Alan,
> 
> 
> Thank you for your patch.
> 
> Am 22.11.24 um 06:20 schrieb Alan Jones:
> 
> > The Nintendo Wii uses a BCM2045 module running proprietary firmware.
> > This adapter is typically managed by emulation software via the raw
> > interface, and is incompatible with standard Bluetooth devices.
> > 
> > Attempting to initialize this adapter breaks synchronization with all
> > previously connected Wii Remotes, requiring applications to
> > re-synchronize the remotes on each usage.
> > 
> > Fix Wii Remote re-synchronization issues with the official Nintendo Wii
> > Bluetooth module by ignoring this adapter.
> 
> 
> Out of curiosity, is anything logged by Linux?
> 
> > Signed-off-by: Alan Jones j.alan.jones@pm.me
> > ---
> > drivers/bluetooth/btusb.c | 3 +++
> > 1 file changed, 3 insertions(+)
> > 
> > diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
> > index e9534fbc92e3..11c9ea182ea4 100644
> > --- a/drivers/bluetooth/btusb.c
> > +++ b/drivers/bluetooth/btusb.c
> > @@ -185,6 +185,9 @@ static const struct usb_device_id quirks_table[] = {
> > /* Broadcom BCM2045 devices */
> > { USB_DEVICE(0x0a5c, 0x2045), .driver_info = BTUSB_BCM2045 },
> > 
> > + /* Broadcom BCM2045 with Nintendo Wii firmware */
> > + { USB_DEVICE(0x057E, 0x0305), .driver_info = BTUSB_IGNORE },
> 
> 
> Could you please write the ids lowercase? Also, sort it above 0x0a5c?
> 
> The comment above the existing entry suggests it’s for all BCM2045
> devices. Could you explain, where the difference in the vendor id comes
> from?
> 
> > +
> > /* Atheros 3011 with sflash firmware */
> > { USB_DEVICE(0x0489, 0xe027), .driver_info = BTUSB_IGNORE },
> > { USB_DEVICE(0x0489, 0xe03d), .driver_info = BTUSB_IGNORE },
> 
> 
> 
> Kind regards,
> 
> Paul
diff mbox series

Patch

diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index e9534fbc92e3..11c9ea182ea4 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -185,6 +185,9 @@  static const struct usb_device_id quirks_table[] = {
 	/* Broadcom BCM2045 devices */
 	{ USB_DEVICE(0x0a5c, 0x2045), .driver_info = BTUSB_BCM2045 },
 
+	/* Broadcom BCM2045 with Nintendo Wii firmware */
+	{ USB_DEVICE(0x057E, 0x0305), .driver_info = BTUSB_IGNORE },
+
 	/* Atheros 3011 with sflash firmware */
 	{ USB_DEVICE(0x0489, 0xe027), .driver_info = BTUSB_IGNORE },
 	{ USB_DEVICE(0x0489, 0xe03d), .driver_info = BTUSB_IGNORE },