-
Notifications
You must be signed in to change notification settings - Fork 113
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
List of USB BT sticks (add to README) #93
Comments
Unreliable device:
|
Unreliable device:
I think the categories should be clarified slightly. It's been almost 2 months since that post and, after testing, I actually prefer the CSR chipsets, even thought they are 'unreliable'. To clarify, with all the CSR chipset dongles I've tried (3 in total now) it is only the initial connection that is unreliable. However, once the connection is made, the gamepad works perfectly. As I mentioned, in the previous issue, the workaround to the unreliable connection is to make a script (replacing the MAC address for the one for your own gamepad):
Usually I only have to run that script once and it connects. Sometimes I need to do it a couple of times. It's a minor inconvenience. After a few months of using the Broadcom USB dongle, I don't like it. The initial connection is great. Within seconds of powering on my gamepad it connects. So Broadcom beats CSR there. However, during gameplay, I eventually had some troubles with the Broadcom dongle. Input would be laggy sometimes. And I noticed that if I was idle for a while (maybe a minute without pressing a button) sometimes the next button input wouldn't register. More of an issue is that the controller would occasionally get locked into a rumble. The gamepad would rumble continually until I shut off the controller. This would also result in the gamepad no longer accepting any input until I powered the gamepad off and on again. In my experience, CSR adapters are unreliable with the initial connection, but otherwise work great. Broadcom adapters are great with the initial connection, but were unreliable for gameplay. I no longer use my Broadcom adapter, and personally would recommend the CSR adapters. So what is unreliable is the initial connection. |
I updated the list, thank you for clarifying and the update!
It would be interesting if the same connection issues show up in Windows too, if not it is most probably a faulty chipset driver - which we should be able to fix somehow. |
I haven't tested much in Windows. I tested the CSR chipsets for the initial connection on Windows and they seemed to connect reliably. So that one was a Linux-only issue for me. I did not test my Broadcom chipset in Windows. I did find this Bluetooth firmware repository. But when I tried it, I didn't notice any difference. I did send you one of each (the Miatone for CSR and the Plugable for Broadcom). So when the package gets there you'll have both to play around with if you feel like it. |
Hey @ugly95! I have read on the Amazon product page of that plugable stick that a common cause for a laggy connection is using a USB 3.0 port, due to interference. Is this something you have known (and avoided)? |
Yeah, the USB 3.0 port issue is something that is often mentioned with all the USB Bluetooth dongles. I just double-checked, and I am not using a 3.0 port. |
Well, I guess here's what I've been using, if it helps: How reliable is the connection? I have had it stop responding at a few points, but I have a feeling that's not the adapter's fault and is more likely because I live in a crappy apartment with lots of wireless interference, because other non-Bluetooth devices are sometimes misbehaving too in here. I'll update this later since I'm moving soon. Other than that, it always connects successfully and all that, so it does seem to work well under Linux. |
Thanks Megan! |
Is not actually an dongle but it was the single solution for Xbox One BT gamepad that worked on Raspberry Pi 3 model B, using Ubuntu Mate 16.04. Good job! |
Not a dongle but the |
Take the performance notes above with a bit of salt. Right now I can't reproduce the initial connection problems anymore but I keep it that way because I had them and the chipset is the same as the other ones.
|
|
https://www.ebay.com/itm/Mini-Wireless-USB-Bluetooth-4-0-Adapter-Dongle-For-PC-Laptop-Win-XP-Vista7-8-10-/223694285836 Unbrand There is video of this Dongle https://youtu.be/CfqN6aA_8mE Performance:
Both USB dongles are with same chipset, and works in same way. Most of times will connect after 5-10seconds, sometime almost instant, but after connect works absolutely great with no drops and no reconnections. I use Ubuntu 18.04.3 64bit, Steam and stand alone games. All installed on Samsung 950 Pro. Used commands to check features: |
Very soon will write review for BT 5. It's Intel® Wireless-AC 9260 Wi-fi + BT 5 combo on desktop. It cost's me around 35$. |
The mPCIe module is easily removable if you want to replace it with something else. |
For those who this solution didn't work out for you try this: sudo dnf install sysfsutils I have a generic Bluetooth adaptor and i got my controller working. |
I confirm this is perfectly working combination: The Intel® Wireless-AC 9260 chip: Intel 9260NGW WiFi Card NGFF Dual Band 802.11ac 1730Mbps MU-MIMO Bluetooth 5.0 |
Please ignore the below, it was caused by Original post: tl;dr: Linux does not detect my X-Box model 1914 controller with Targus dongle. My system:
What I've done:
What I was expecting to happen: The controller should show up in the device listing after scanning for a while. What actually happened: The controller does not show up, even though three other devices do show up. The same goes for the GNOME Bluetooth setting dialogue: other devices show up, but not the X-Box controller. |
Interesting... Where is this setting? Edit: Found it... |
Background:I don't have an xbox I just bought the stand-alone controller and the above USB dongle. What Didn't WorkI installed the MPOW drivers from their site. And out of the box the controller worked right away, until I turned it off. It would get stuck in the connect / disconnect loop like in #166. I had to pair it every time to make it work. I tried everything to alleviate this. I tried:
Nothing worked. And eventually it stopped working altogether, I suspect something was corrupted in the controller because bluez was complaining about reading a configuration map (sorry I didn't save the actual error messages). At this point nothing I did could make it work. So I took it to a win10 machine and tried:
Still didn't work. What Worked
Finally it was working! So I tested:
In each instance the controller does one flash, then goes solid, rumbles, and is connected. ConclusionI spent many, many, hours fighting with the controller and the bluetooth stack to get this thing working. So I'm exceptionally happy that it is working so well now. However I must confess I'm not sure why. I think it maybe something internal to the controller and getting it to pair with the same USB dongle on win10, but without more information from the controller itself it will be difficult to know. So I thought I would document my experiences and pass it along to see if it helps the dev team here. I'm a full-time C programmer (microcontrollers mostly) and I'm available to do some more testing and debugging. Thank you so much for this |
Yeah, I suspect something similar. There seems to be some partially re-used internal state in the controller - which may even be cleaned up when switching between the original Wifi dongle and any Bluetooth dongle. This cleanup is sometimes needed. Other times, it just helps pairing it with Windows or an Android phone once. This is why I'm usually recommending to try pairing the controller to a different device (Windows, Android), different dongle (Bluetooth chipset/MAC), or just with a different mode (Bluetooth vs Wifi), then try again. ERTM should not be disabled if you're using the L2CAP patch: I found that rumble may crash the gamepad firmware when ERTM is disabled. But without L2CAP patch, the controller doesn't pair with ERTM enabled. Disassembling the firmware to find out about this buggy/quirky behavior could be an interesting project but I fear information gathered there may not be used for this project. So I'd prefer to never post or refer to any information observed from disassembled firmware blobs. The observed bugs are not uniquely a problem when using the Linux Bluetooth stack, some can also be observed by Windows users, Android users seem fine, tho.
This may actually be a useful skill. Are you familiar with the Bluetooth protocol? I think whatever bug we are looking for, we won't find a fix for it in xpadneo itself. Every work-around xpadneo could do is probably already covered. But there may be a bug hiding in Bluez or the kernel, and maybe it can be found by observing and understanding the Bluetooth protocol traces between controller and BT dongle. The original Wifi dongle is a complete different protocol (GIP) which is stable (except for the 100 Hz bug). Also, I'd like to reverse engineer the profile upload protocol implemented in the Elite 2 or later controllers: All models that expose a HID keyboard via Bluetooth should be able to receive mapping profiles by uploading HID reports (probably op-codes 6, 7, 8, 9, or 10 are involved. With profiles, the controller should be able to act as a keyboard, mapping some buttons or combination of buttons to keyboard events. See also here as a starting point: https://github.com/atar-axis/xpadneo/blob/master/docs/descriptors/xbe2_linux.md XBE2 supports 4 profiles (where the first seems to be a hard-coded default profile resembling the original mapping only), and the other 3 are custom profiles that can be uploaded into the hardware. The new XBXS controller (with share button) probably supports one profile only as it has no hardware switch with LED indicator for selecting a profile. It probably uses hardware-supported mappings but the profile needs to be uploaded when switched. I'm planning to implement something similar in software for other models but to do it properly, we'd have to know first how it's implemented in controllers supporting that feature native in hardware. So you see, there's at least two interesting projects for a low-level C programmer usually talking "microcontrollers". :-) |
The first link seems to be wrong... |
BTW: I've seen cases with the original Xbox One S controller (the first Bluetooth model) where the controller would suddenly expose a completely different HID protocol/mapping after it was paired with Windows. So there's clearly something quirky inside the firmware. |
Fixed.
That's the thing, I'm not using the L2CAP patch anymore. I reset my system to a stock LinuxMint 20.1 system with a stock kernel. Kernel / L2CAP TestingThis is what my setup looks like now: Current Setup 5.8.0-44
So I went back and tried an older kernel just in case I missed my apt-get installing a newer ubuntu kernel which had been patched: Testing Older Kernel 5.8.0-23
And just to be extra sure I downloaded the vanilla 5.8.0 kernel straight from kernel.org. And made sure that the patch was not in the code (it wasn't). And then tried again: Testing Vanilla Kernel 5.8.0
This is bizarre because it 100% was not working at all before. And I know I was getting warnings about L2CAP in one of the logs I was looking at. When it wasn't working for me I tried updating the firmware and that didn't work. So then I tried pairing with windows and the dongle, then switching both back to Linux. Only at that point did it start working properly. My theory is that my controller was having two problems: 1) the L2CAP issue and 2) a corrupted internal state. Upgrading the firmware on my controller fixed 1, and pairing with windows fixed 2. Looking at the patch from #272 all it does is handle the Unfortunately I never tried pairing with windows before doing the controller firmware update. So it could be that just the windows pairing alone would have fixed it. I would have to rollback the controller firmware to test. If you know of a way to do that please let me know.
No sorry, somehow I've managed to never have a project with either bluetooth or zigbee. But I have played around with Linux kernel drivers a little bit here and there.
Interesting. Like I said I don't have bluetooth experience, nor am I familiar with controllers. I was exclusively a mouse+keyboard player until two weeks ago and I still don't actually have a console. But if I have some time this weekend I'll do some reading up on it. I'm curious about getting the battery state readings to work, and from what I've seen so far that seems like something that would need to fixed in BlueZ. Let me know if you want me to test some other configurations. EDIT: I'm not getting battery error messages from bluez anymore and it looks like the battery stuff is working fine already. |
Matches my theory. And fits observations. But 1 is probably just fixed because a link key was already present. Without ERTM, you'll have a hard time getting the link key negotiated. Once that's stored in the Bluetooth service, successive connects will work.
Well, I think sending
The battery reports are actually embedded in the HID protocol, there should be nothing about it that is handled by the Bluetooth stack. It's report 0x04. But that is not hard-coded, we actually detect it during descriptor parsing when the kernel passes the battery HID report descriptor to us. The driver stores the ID, and later when a report comes in, we actually handle the report parsing ourselves and stop the kernel from using its own battery parsing implementation. We do this because the battery reports are malformed: The descriptor says the payload has a level value of 0-255 but that is not true. The payload is actually a 2 bit level value and some status bits. Once the first battery report is received, we register a power interface with the kernel to report the battery level. We don't do that earlier because we cannot poll the battery, and GUIs do not handle an unknown battery state very well. So unless the gamepad sent the first battery report, there won't be a battery associated in the Linux power management. But later there will, and it should work. In
And then it shows up in
Maybe with your previous setup/situation, the kernel was never able to receive a battery report. |
In my case I'm actually getting the battery information from bluez, not xpadneo. This is what my upower -d output looks like:
Note that the data is coming from
If I swap batteries with a fresh pair the battery level goes to 100%, so it seems accurate to me. In my case I'm using AA batteries not one of the official xbox rechargeable ones. So I wonder if that makes a difference? |
I'm using plain AA batteries, too. I never saw bluez showing any battery levels here, nor did anyone else report that. Also, I wonder how accurate those levels really are. I wonder if it uses the same bit format as described here: https://github.com/atar-axis/xpadneo/blob/master/docs/reports/xb1s_battery_event.md The XBE2 controller has internal rechargeable batteries (and comes with a docking station case, too), I've neither seen bluez reporting a battery there. Which bluez version are you using? Maybe that's a distribution patch? |
My bluez is version 5.53, I also downloaded and compiled the stock version 5.55 and got the same result. As for the accuracy it seems fairly accurate so far. The batteries I was using yesterday dropped from 85% to 84% just from a few minutes of playing around with the Bluetooth connections yesterday. And when I put in fresh batteries it reads 100%. The weekend is here now so hopefully I'll get some gaming in :). I'll see how it looks after a few hours of usage. |
Realtek Semiconductor Corp.ORICO BTA-508 Bluetooth 5.0 USB adapter with Kernel 5.8
Dongle is not recognized by default, need to use install its driver and Orico doesn't provide one. I got driver from Mpow BH519A and correct firmware. If you don't have It may enter in a loop pairing or connecting after pairing, in this case remove device, restart bluetooth service and try again. After it connects and the xbox logo on controller stop flashing and keeps on, the connection is stable. The ORICO BTA-508 Bluetooth 5.0 USB adapter with Kernel 5.11
I will update this with future information, after more tests. |
Kernel 5.8 is quite ancient in terms of Bluetooth. Kernel 5.9 added a lot of quirk handling for many Bluetooth dongles. Are you able to try a newer kernel, maybe 5.10 at least because that is an LTS kernel? |
I will try later with a fresh install, this is my main machine and I can't upgrade yet. |
Using a PCIe WiFi / BT (though it connects through a USB header on the motherboard) with an Intel AX210 chipset. Works with my Elite Series 2 out of the box on kernel 5.14, though Bluetooth dies on reboot. One needs to completely power cycle the computer to get BT back. No performance issues so far. |
Not Working Device https://www.ebay.com.au/itm/303605520995
|
Here are my experiences My System: OpenSUSE Tumbleweed with Gnome 41.1, BlueZ 5.62 and xpadneo-kmp-default 0.9.1. I use the "XBOX Wireless Controller" (Series S/X) (QAT-00002, MODEL NO: 1914). I tested xpadneo with two BT USB dongles:
The gamepad works with both dongles, if they got connected with a Win system on the same machine before pairing with Linux. |
Working SetupAfter the taking the steps below works absolutely flawless, pairing works out of the box with the integrated Gnome Bluetooth manager.
StepsUpdate controllers via Windows Dev Machine running in Virtual Box
Update
Just connect via the Gnome built-in Bluetooth manager and enjoy |
AMD RZ608 Wi-Fi 6E module (rebranded MediaTek MT7921K) and Bluetooth 5.2 combo. The MB: Connection is very good and i do not see any problems, actually MB comes with Wi-fi and BT antenna and maybe this is ultimate BT combo for wireless Xbox One S controller. Distro tested: It's working out from box and with xpadneo too. |
I've had my dongle for a while and it's worked fine for the little bits of bluetooth I've needed in the past. I've just tested it with xpadneo for a few hours of gaming and no dropouts or other issues so far. I got it here: https://www.mwave.com.au/product/simplecom-nb409-bluetooth-50-usb-wireless-dongle-with-a2dp-edr-ac38550 Branding: Simplecom NB409 Bluetooth 5.0 USB Wireless Dongle with A2DP EDR lsusb: ID 0bda:8771 Realtek Semiconductor Corp. Bluetooth Radio Unlike the previous report, it's worked straight out of the box for me on Manjaro KDE with kernel 5.15 and 6.1. I had to manually install xpadneo, the AUR package didn't work for me (DKMS in both cases). Other than that, so far so good. I did update the firmware of the controller via windows as a debugging step while still on the broken AUR package, but even with the AUR package the bluetooth was pairing fine, i just wasn't getting the rumble. |
Please add new issues for reporting working setups and don't make this an endless mega issue. Thanks. :-) |
Some users have issues to connect the gamepad to their USB BT stick.
This is in general not a xpadneo issue. But it would be great anyway to have a list of dongles which are compatible and of those which are not.
It would be great if some of you could share their experience too!
We are especially interested in
lsusb | grep -i 'blue'
Cambridge Silicon Radio
ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Broadcom
ID 0a5c:21e8 Broadcom Corp. BCM20702A0 Bluetooth 4.0
The text was updated successfully, but these errors were encountered: