Hi Sumit, On 06/17/15 06:00, Sumit Khanna wrote: > On 17/06/15 20:46, Sumit's Mailing Lists wrote: >> On 17/06/15 04:52, Ben Young Tae Kim wrote: >>> Hi Sumit, >>> >>> On 06/15/15 10:48, Sumit's Mailing Lists wrote: >>>> On 16/06/15 00:57, Ben Young Tae Kim wrote: >>>>> Hi Sumit, >>>>> >>>>> >>>>> On 06/15/15 07:16, Sumit's Mailing Lists wrote: >>>>>> On 15/06/15 21:55, Marcel Holtmann wrote: >>>>>>> Hi Smuit, >>>>>>> >>>>>>>>>> I'm currently using an MSI WS60 laptop which contains the following >>>>>>>>>> Bluetooth controller (from lsusb): >>>>>>>>>> >>>>>>>>>> Bus 003 Device 003: ID 0cf3:3004 Atheros Communications, Inc. AR3012 >>>>>>>>>> Bluetooth 4.0 >>>>>>>>> assuming that the firmware is present, this is most likely just missing the right VID/PID additions in the drivers. Please prepare a patch for that. >>>>>>>>> >>>>>>>>>> and the more detailed version: >>>>>>>>>> >>>>>>>>>> Bus 003 Device 003: ID 0cf3:3004 Atheros Communications, Inc. AR3012 >>>>>>>>>> Bluetooth 4.0 >>>>>>>>>> Device Descriptor: >>>>>>>>>> bLength 18 >>>>>>>>>> bDescriptorType 1 >>>>>>>>>> bcdUSB 1.10 >>>>>>>>>> bDeviceClass 224 Wireless >>>>>>>>>> bDeviceSubClass 1 Radio Frequency >>>>>>>>>> bDeviceProtocol 1 Bluetooth >>>>>>>>>> bMaxPacketSize0 64 >>>>>>>>>> idVendor 0x0cf3 Atheros Communications, Inc. >>>>>>>>>> idProduct 0x3004 AR3012 Bluetooth 4.0 >>>>>>>>>> bcdDevice 0.01 >>>>>>>>>> iManufacturer 0 >>>>>>>>>> iProduct 0 >>>>>>>>>> iSerial 0 >>>>>>>>>> bNumConfigurations 1 >>>>>>>>>> Configuration Descriptor: >>>>>>>>> I actually prefer /sys/kernel/debug/usb/devices output for the devices. >>>>>>>>> >>>>>>>>> Regards >>>>>>>>> >>>>>>>>> Marcel >>>>>>>>> >>>>>>>> Here is the output from /sys/kernel/debug/usb/devices for my ath3k (also >>>>>>>> added it to the kernel bugzilla): >>>>>>>> >>>>>>>> T: Bus=03 Lev=02 Prnt=02 Port=02 Cnt=01 Dev#= 3 Spd=12 MxCh= 0 >>>>>>>> D: Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1 >>>>>>>> P: Vendor=0cf3 ProdID=3004 Rev= 0.01 >>>>>>>> C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA >>>>>>>> I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none) >>>>>>>> E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl=1ms >>>>>>>> E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms >>>>>>>> E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms >>>>>>>> I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none) >>>>>>>> E: Ad=83(I) Atr=01(Isoc) MxPS= 0 Ivl=1ms >>>>>>>> E: Ad=03(O) Atr=01(Isoc) MxPS= 0 Ivl=1ms >>>>>>>> I: If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none) >>>>>>>> E: Ad=83(I) Atr=01(Isoc) MxPS= 9 Ivl=1ms >>>>>>>> E: Ad=03(O) Atr=01(Isoc) MxPS= 9 Ivl=1ms >>>>>>>> I: If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none) >>>>>>>> E: Ad=83(I) Atr=01(Isoc) MxPS= 17 Ivl=1ms >>>>>>>> E: Ad=03(O) Atr=01(Isoc) MxPS= 17 Ivl=1ms >>>>>>>> I: If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none) >>>>>>>> E: Ad=83(I) Atr=01(Isoc) MxPS= 25 Ivl=1ms >>>>>>>> E: Ad=03(O) Atr=01(Isoc) MxPS= 25 Ivl=1ms >>>>>>>> I: If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none) >>>>>>>> E: Ad=83(I) Atr=01(Isoc) MxPS= 33 Ivl=1ms >>>>>>>> E: Ad=03(O) Atr=01(Isoc) MxPS= 33 Ivl=1ms >>>>>>>> I: If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none) >>>>>>>> E: Ad=83(I) Atr=01(Isoc) MxPS= 49 Ivl=1ms >>>>>>>> E: Ad=03(O) Atr=01(Isoc) MxPS= 49 Ivl=1ms >>>>>>>> >>>>>>>> and the firmware the kernel is trying to load: >>>>>>>> >>>>>>>> [ 762.729370] usb 3-1.3: Direct firmware load for >>>>>>>> ar3k/AthrBT_0x00000200.dfu failed with error -2 >>>>>>>> [ 762.729373] Bluetooth: Patch file not found ar3k/AthrBT_0x00000200.dfu >>>>>>>> [ 762.729374] Bluetooth: Loading patch file failed >>>>>>>> [ 762.729381] ath3k: probe of 3-1.3:1.0 failed with error -2 >>>>>>>> [ 762.729411] usbcore: registered new interface driver ath3k >>>>>>> I fail to see that firmware in linux-firmware tree. However this up to Atheros / Qualcomm to submit there. I can not do much about this. >>>>>>> >>>>>>> Regards >>>>>>> >>>>>>> Marcel >>>>>>> >>>>>> Marcel, >>>>>> >>>>>> So it's pulling the right firmware file for my device, but It just >>>>>> hasn't been released yet? >>>>>> >>>>>> I know with the Wi-Fi firmware, the ath10k devs had python scripts to >>>>>> extract the firmware binaries from the Windows drivers (mentioned in >>>>>> here https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1383184). Has >>>>>> anyone done that before with the bluetooth firmware, or do you typically >>>>>> just wait for atheros/qualcom to release official ones? >>>>> Where did you get your atheros board/card since I couldn't find that board here. Is it a laptop? The BT firmware driver was trying to load AthrBT_0x00000200.dfu file and it got failed because no firmware file was present. But 0x00000200 means fw_version.rom_version which coming from controller chip, however, I haven't seen this version on Atheros chipset. >>>>> >>>>> I'm adding my friend - Rick Huang here. He may help you out >>>>> >>>>> Hi Rick, >>>>> >>>>> Have you seen rom_version as 0x00000200? >>>>> >>>>>> Sumit >>>>>> -- >>>>>> To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in >>>>>> the body of a message to majordomo@xxxxxxxxxxxxxxx >>>>>> More majordomo info at http://vger.kernel.org/majordomo-info.html >>>>> Thanks >>>>> -- Ben Kim >>>>> >>>> Yes, It's an MSI WS-60 Laptop, purchased two months ago in Australia. Is >>>> there any other debugging information I need to pull for you? >>>> >>>> Sumit >>>> -- >>>> To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in >>>> the body of a message to majordomo@xxxxxxxxxxxxxxx >>>> More majordomo info at http://vger.kernel.org/majordomo-info.html >>> According to my colleague, it is not AR chip but QCA ROME core inside even though they're sharing same VID/PID with AR/QCA ROME(version 2). That's why you cannot bring up your card with ath3k driver. I knew it was not a good idea as it was early stage to develop the card so that next version of ROME USB card(v3.0 or v3.2) will use different PID/VID as you can see below. >>> >>> Can you follow up these instructions to see whether or not it can be addressed on your setup? >>> >>> -- >>> 1. put this code in drivers/bluetooth/btusb.c >>> >>> static const struct usb_device_id blacklist_table[] = { >>> ... >>> /* QCA ROME chipset */ >>> { USB_DEVICE(0x0cf3, 0xe300), .driver_info = BTUSB_QCA_ROME }, >>> { USB_DEVICE(0x0cf3, 0xe360), .driver_info = BTUSB_QCA_ROME }, >>> { USB_DEVICE(0x0cf3, 0x3004), .driver_info = BTUSB_QCA_ROME }, // <-- add new VID/PID here >>> ... >>> >>> 2. Copy firmware files into /lib/firmware/qca >>> - nvm_usb_00000200.bin >>> - rampatch_usb_00000200.bin >>> Those FW files won't be available on linux-firmware.git til today but it it will be available soon I believe. >>> -- >>> >>> Thanks >>> -- Ben Kim >>> >>> >>> >> Hi Ben, >> >> I added that line to my btusb.c; did a mrpropery, copied my .config back >> into the source tree, disabled ATH3K in menucofnig, made the bzImage and >> rebooted. The firmware you attached is in /lib/firmware/qca. >> >> I enabled debugging (FLAGS_btusb.o := -DDEBUG in the Makefile) so I >> could get some more info, and discovered I also have to delete this line >> or it will match the ath first: >> >> { USB_DEVICE(0x0cf3, 0x3004), .driver_info = BTUSB_ATH3012 } >> >> So then I saw >> >> [ 1.263991] usb 3-1.3: new full-speed USB device number 3 using ehci-pci >> [ 1.277022] usb 4-1.8: new full-speed USB device number 3 using ehci-pci >> [ 1.350050] usb 3-1.3: New USB device found, idVendor=0cf3, >> idProduct=3004 >> [ 1.350051] usb 3-1.3: New USB device strings: Mfr=0, Product=0, >> SerialNumber=0 >> [ 1.350461] intf ffff88041bf62400 id ffffffff81d83bc0 >> [ 1.350462] BT Device Info 0 >> [ 1.350463] BT Device Info (after matching) 32768 >> [ 1.350466] In Rome Block >> [ 1.350546] input: ETPS/2 Elantech Touchpad as >> /devices/platform/i8042/serio1/input/input10 >> [ 1.350671] hci0 >> [ 1.350879] Bluetooth: hci0: don't support firmware rome 0x200 >> [ 1.364795] usb 4-1.8: New USB device found, idVendor=1770, >> idProduct=ff00 >> [ 1.364797] usb 4-1.8: New USB device strings: Mfr=1, Product=1, >> SerialNumber=1 >> [ 1.364798] usb 4-1.8: Product: MSI EPF USB >> [ 1.364799] usb 4-1.8: Manufacturer: MSI EPF USB >> [ 1.364800] usb 4-1.8: SerialNumber: MSI EPF USB >> >> So those BT Device Info statements I added in the probe function. "In >> Rome Block" I added right after "if (id->driver_info & BTUSB_QCA_ROME) " >> and you can see where that error comes from. >> >> And that comes from...oh it checks another table...okay so I added the >> following to qca_device_info >> >> { 0x00000200, 28, 4, 18 }, >> >> and now I get; >> >> [ 1.357942] intf ffff88041ba5bc00 id ffffffff81d83bc0 >> [ 1.357943] BT Device Info 0 >> [ 1.357944] BT Device Info (after matching) 32768 >> [ 1.357946] In Rome Block >> [ 1.358113] hci0 >> [ 1.358516] bluetooth hci0: Direct firmware load for >> qca/rampatch_usb_00000200.bin failed with error -2 >> [ 1.358517] Bluetooth: hci0: failed to request rampatch file: >> qca/rampatch_usb_00000200.bin (-2) >> >> So progress. It's attempting to load the firmware and failing. Are those >> the right numbers for the device_info block? >> >> Sumit > Just remembered -2 is when it can't even find the firmware. But I think > I have it installed right. Is this correct: > > catelyn linux # ls /lib/firmware/qca/ -l > total 60 > -rw-r--r-- 1 root root 1859 Jun 17 18:07 nvm_usb_00000200.bin > -rw-r--r-- 1 root root 54432 Jun 17 18:07 rampatch_usb_00000200.bin > > catelyn linux # sha256sum /lib/firmware/qca/* > 50cddc73c1a7c90bb3338941785d46088374b2aebf5dd1679c23145e39ad5087 > /lib/firmware/qca/nvm_usb_00000200.bin > 7551fc3a01fe46514d4da265095aabf07371cf17418a9f238e51b0fc4e83cfc5 > /lib/firmware/qca/rampatch_usb_00000200.bin > You did right thing. I cannot understand why driver couldn't access firmware file which is in /lib/firmware/qca. Did you check each folder has right permission to access? Thanks -- Ben Kim -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html