I have a Bluetooth adapter, it's working quite good on my Windows 7 (x64). But on my Fedora 24 (x64), it keeps showing me the "Bluetooth is OFF" even when I tried to turn it ON.

I'm trying to solve this problem since yesterday, and it's no use! I already have these installed: bluez-hidhci, bluez-utils and gnome-Bluetooth. None of them worked for me!

Any ideas? Thanks!


$ lsusb
Bus 001 Device 003: ID 0a12:0001 Cambridge Silicon Radio, Ltd 
$ rfkill list
2: hci0: Bluetooth
    Soft blocked: no
    Hard blocked: no
$ dmesg | grep -i blue
[   12.067177] Bluetooth: Core ver 2.21
[   12.067212] Bluetooth: HCI device and connection manager initialized
[   12.067218] Bluetooth: HCI socket layer initialized
[   12.067221] Bluetooth: L2CAP socket layer initialized
[   12.067232] Bluetooth: SCO socket layer initialized
[   18.619866] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[   18.619871] Bluetooth: BNEP filters: protocol multicast
[   18.619876] Bluetooth: BNEP socket layer initialized
$ hciconfig
hci0:   Type: BR/EDR  Bus: USB
    BD Address: AE:2D:22:00:FF:00  ACL MTU: 344:12  SCO MTU: 180:16
    RX bytes:461 acl:0 sco:0 events:17 errors:0
    TX bytes:296 acl:0 sco:0 commands:17 errors:0
$ uname -a
Linux local.arfed 4.5.5-300.fc24.x86_64 #1 SMP Thu May 19 13:05:32 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
  • Answering the problem: Bluetooth drivers are pretty much all the same, especially on USB. This device is known to work on Linux generally. Search for the device ID, and see this issue and similar pages generally. – chrylis -cautiouslyoptimistic- Jan 1 '17 at 22:58
  • does sudo hciconfig hci0 up make it work? – Jeremy31 Jan 2 '17 at 16:50

Answering the question in the title: Is is possible to copy a driver from Windows to Linux?

No, not without (quite a lot of) extra work.

A driver hooks into the kernel of the operating system, allowing it to "drive" some hardware.

The Linux kernel and the Windows kernel are understandably very different (or they would both be called "Windows" or "Linux"). So one can't expect to be able to simply take a driver, even if it was available in source form, from Windows and make it link with the Linux kernel, or even compile it reasonably cleanly on a Linux system (or on any system which is not the specific version(s) of Windows that it was written for).

You can't even take a driver from OSes that are superficially similar, such as the BSD systems, and just import it into another Unix system without some delicate coding. Having said that, code sharing on the "device level" do happen from time to time between free Unix systems, but not without the extra effort of fitting the code into a new kernel infrastructure.

I do believe that there are instances where people have written kernel code for accessing reverse engineered binary blobs of drivers. This obviously requires someone to sit down to look at the binary driver, figure out what it's doing, and write the appropriate bits of Linux kernel code to hook into it, so it's still not just a matter of copying the driver.

| improve this answer | |
  • 16
    Ndiswrapper is a project to enable the use of NDIS drivers on Linux. This has been implemented by writing a Linux module that "wraps" the binary Windows driver. But, as has been said, in general it is not possible to use Windows drivers, because the kernel expects a driver to imlement a certain interface towards the kernel, and the Linux interface differs radically from the Windows interface. – Johan Myréen Jan 1 '17 at 12:26
  • @JohanMyréen Ah, that's what the thing is called! I haven't been running Linux for a long time, but I think Ndiswrapper is what I remembered when I added that last paragraph. I'm sure someone somewhere has done it outside of that wrapper too, but it can't be easy. – Kusalananda Jan 1 '17 at 14:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.