Bluetooth Dongle with CSR chipset and flash or external memory using Flash

These are some Bluetooth dongle, which support changing firmware with dfutool and tuning with bccmd. There is no guarantee that they still support flashing and tuning when you buy them, because vendors often tend to change the hardware without further notice.

Fujitsu Siemens
BLUETOOTH V2.0 USB-Stick

Cellink BTA-6030 Bluetooth Adapter

Other Dongle which seem to work (see comments on this article. not verified.):

Toshiba PA3455U-1BTM
Linksys USBBT100 (newer ones have Broadcom chipset, older ones CSR but only Bluetooth 1.1)
Aircable Host XR

80 thoughts on “Bluetooth Dongle with CSR chipset and flash or external memory using Flash”

  1. pretty interesting since it has external antenna. but i think this is not BT 2.0 + EDR?
    Anyway feel free to add further dongle having CSR Chipset and support dfu.

  2. Hi there

    Fujitsu Siemens BLUETOOTH V2.0 USB-Stick:
    —————————————–
    Reading firmware -> possible
    Backup firmware -> possible
    Writing new firmware -> (i guess) impossible
    Reading key entries -> possible
    Change key entries > impossible

    $ lsusb

    Bus 002 Device 006: ID 0bf8:1003 Fujitsu Siemens Computers (!)

    sudo hciconfig -a
    hci0: Type: USB
    BD Address: 00:XX:XX:XX:X:XX ACL MTU: 384:8 SCO MTU: 64:8
    UP RUNNING PSCAN ISCAN
    RX bytes:401 acl:0 sco:0 events:18 errors:0
    TX bytes:317 acl:0 sco:0 commands:17 errors:0
    Features: 0xff 0xff 0x8f 0xfe 0x9b 0xf9 0x00 0x80
    Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
    Link policy: RSWITCH HOLD SNIFF PARK
    Link mode: SLAVE ACCEPT
    Name: ‘IBM-0’
    Class: 0x3e0100
    Service Classes: Networking, Rendering, Capturing, Object Transfer, Audio
    Device Class: Computer, Uncategorized
    HCI Ver: 2.0 (0x3) HCI Rev: 0x77b LMP Ver: 2.0 (0x3) LMP Subver: 0x77b
    Manufacturer: Cambridge Silicon Radio (10)(!!!)

    Due to the fact that the important keys are not changeable, no test of modifying firmware was done.

    Cellink BTA-6030 Bluetooth Adapter
    ———————————-
    not available anymore so no testing (bad luck)

    Linksys USBBT100
    —————-
    Neither reading or writing is possible.
    (Version 2. manufactured 46/2006)
    +++
    (2 different dongles tested, both Version 2. One was purchased in 2005, but the data on it are not known at this time of writing)

    $ sudo ./bccmd -d hci0 pslist
    Unsupported manufacturer

    $ sudo hciconfig -a
    hci0: Type: USB
    BD Address: 00:16:B6:XX:XX:XX ACL MTU: 377:10 SCO MTU: 64:8
    UP RUNNING PSCAN ISCAN
    RX bytes:435 acl:0 sco:0 events:20 errors:0
    TX bytes:325 acl:0 sco:0 commands:20 errors:0
    Features: 0xff 0xfe 0x0d 0x38 0x08 0x08 0x00 0x00
    Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
    Link policy: RSWITCH HOLD SNIFF PARK
    Link mode: SLAVE ACCEPT
    Name: ‘IBM-0’
    Class: 0x3e0100
    Service Classes: Networking, Rendering, Capturing, Object Transfer, Audio
    Device Class: Computer, Uncategorized
    HCI Ver: 1.2 (0x2) HCI Rev: 0x0 LMP Ver: 1.2 (0x2) LMP Subver: 0x309
    Manufacturer: Broadcom Corporation (15)

    $ sudo ./dfutool -d hci0 archive LinksysBTFirmware.dfu
    Can’t find any DFU devices

    +++++++++++++++++++++++++++++++++++++++++++++++++++

    All described dongles purchased on 04/07. Any other working dongles known ??? Or is there any other Hint. Thx in advance.

    Greets

    Andi

  3. As you can see, the Linksys USBBT100 is a Broadcom version. bccmd won’t work with Broadcom since it is vendor specific and only works with CSR.

    The command “hcitool revision hci0” gives us further information about a chipset:

    $ sudo hciconfig hci0 revision
    hci0: Type: USB
    BD Address: 00:DE:AD:BE:AF:00 ACL MTU: 384:8 SCO MTU: 64:8
    HCI 19.2
    Chip version: BlueCore4-External
    Max key size: 56 bit
    SCO mapping: HCI

    BlueCore4-External is good and means that the Chip is connected to external memory, which should be flash memory. BlueCore4-ROM is bad. If you are unsure just open your dongle.

    This is how my Fujitsu looks like. Your output of lsusb and hciconfig looks very good. The same here. The information about the vendor provided by lsusb are independent from the information of hciconfig. Just continue. 🙂

  4. Fujitsu Siemens BLUETOOTH V2.0 USB-Stick works by me.
    i could change the product id and vendor keys and load new Firmware.
    keys are stored in psi(0x0001) instead of psf(0x0002)
    bccmd -d hci0 psset-s 0x0001 0x02bf 0x0002
    bccmd -d hci0 psset-s 0x0001 0x02be 0x0a12

  5. Hi all,

    here´s how i managed to change key entries on a Fujitsu Siemens BLUETOOTH V2.0 USB-Stick:

    Some checks and how the output should be:

    $ sudo hciconfig -a hci0 revision
    hci0: Type: USB
    BD Address: 00:XX:XX:XX:XX:XX ACL MTU: 0:0 SCO MTU: 0:0
    HCI 19.2
    Chip version: BlueCore4-External //important thx to Martin
    Max key size: 56 bit
    SCO mapping: HCI

    $ lsusb
    Bus 005 Device 001: ID 0000:0000
    Bus 004 Device 001: ID 0000:0000
    Bus 003 Device 001: ID 0000:0000
    Bus 002 Device 006: ID 0bf8:1003 Fujitsu Siemens Computers
    Bus 002 Device 001: ID 0000:0000
    Bus 001 Device 001: ID 0000:0000

    $ sudo ./bccmd memtypes
    psi (0x0001) = Flash memory (0)
    psf (0x0002) = Flash memory (0)
    psram (0x0008) = RAM (transient) (2)

    In our case psi (0x0001) is important. Thx to Sven

    Here we start changing keys
    ===========================

    +++++++++++++++++++++++ 1 +++++++++++++++++++++++++++
    $ sudo ./bccmd -d hci0 psget -s 0x000f 0x02be
    USB vendor identifier: 0x0bf8 (3064) //original

    $ sudo ./bccmd -d hci0 psset -s 0x0001 0x02be 0x0a12
    (no output)

    $ sudo ./bccmd -d hci0 psget -s 0x000f 0x02be
    USB vendor identifier: 0x0a12 (2578) //new !

    +++++++++++++++++++++++ 2 +++++++++++++++++++++++++++

    $ sudo ./bccmd -d hci0 psget -s 0x000f 0x02bf
    USB product identifier: 0x1003 (4099) //original

    $ sudo ./bccmd -d hci0 psset -s 0x0001 0x02bf 0x0002
    (no output)

    $ sudo ./bccmd -d hci0 psget -s 0x000f 0x02bf
    USB product identifier: 0x0002 (2) //new

    +++++++++++++++++++++++++++++++++++++++++++++++++++++

    $ lsusb
    Bus 005 Device 001: ID 0000:0000
    Bus 004 Device 001: ID 0000:0000
    Bus 003 Device 001: ID 0000:0000
    Bus 002 Device 003: ID 0a12:0002 Cambridge Silicon Radio, Ltd //new ! 🙂
    Bus 002 Device 001: ID 0000:0000
    Bus 001 Device 001: ID 0000:0000
    —————————————————+

    Hope this may help somebody who also owned this dongle.

    Greetings

    Andi

  6. Hi,
    i’ve a MSI BToes 2.0 ERD.

    hciconfig hci0 revision
    hci0: Type: USB
    BD Address: 00:15:83:BA:84:8B ACL MTU: 0:0 SCO MTU: 0:0
    Unified 21e
    Chip version: BlueCore4-ROM
    Max key size: 128 bit
    SCO mapping: HCI

    Can i use this dongle? Because it only has BlueCore4-ROM?
    Thx
    Asgard

  7. you can’t update the firmware because of the ROM. What you can do, is play around with your PSKEYs using bccmd.
    But be careful! When you modify the keys, you might brick your dongle!

  8. HI,
    thanks for the information!
    What are the PSKEYs exactly for?
    What can i do with this keys?

    Thanks for your help!

    Greetings
    Asgard

  9. Hi there,

    i worked through the BlueCore BCCMD commands specification from CSR. One thing i´ m still wondering is how do you know on which memory block in the persistent store we had to change the ps-keys. Was it like trial and error or is there any reference to this? Maybe i´ ve overread something. At the moment this isn´ t clearly visible for me. I don´t get the differences between Implementation Configuration: psi and Factory Configuration: psf except the intension of these memory units. Maybe the different ACL numbers are an indicator ?

    thx in advance for feedback.

    Greetings Andi

  10. i’m not quite sure. for me it was a little try and error. i think it might be firmware dependent which store to use. one firmware i was using completely ignored a certain pskey.
    without looking into the spec – i believe psf is read-only, isn’t it? keep us up informed if you find something out.

  11. !Corrected Version

    Hi Martin and others,

    i´ve read through the “BCCMD Commands” once again. Sadly CSR encrypted the document with 128 Bit rc4 so no copy-paste 🙁 Anyway, here are some interesting statements:
    1. The database are primarily used to configure many elements of the firmware … [S.28]
    2. PSI & PSF stores data in an EEPROM or in a flash-memory. [S.29]
    3. MAYBE THE IMPORTANT THING: The values initially lies in the psi library, but a bccmd moves these values to the psf store … [S.30]

    Maybe only the bccmd interpreter decides where to store the data on the chip? But actually this can´t be true. If we take a look at the bccmd help we see :

    psset [-r] [-s ] [stores] [key] value

    We had to set the where to write the key.
    The Persistent store on the chip is subdivided in

    1. psram (RAM) = 0×0008
    2. psi (Flash or EEPROM) = 0×0001
    3. psf (Flash or EPPROM) = 0×0002
    4. psrom (ROM) = ——-

    But if we use 0×000F the store will be searched as follows: psram,psi,psf and at last psrom …

    Summary:
    ========
    I think firmware not decides where to store a key. The psf storage holds no values by default. The behavior of a firmware can be changed with entries in the psf. The psi storage comes one step before the psf storage. Maybe this is also a hint for using psi … *confused*

    Some comments ?
    thx for reply

    Greets

    Andi

    p.s. please delete my first two postings.

  12. I can confirm that the USB Bluetooth V2.0 + EDR Toshiba adaptor (PA3455U-1BTM) works perfectly.

    It uses the CSR BlueCore4-External chip and stores keys in PSI.

    I have been able to set USB PID and VID, and upload new firmware.

  13. I tried different CSR bluetooth sticks without luck. The command bccmd with psset always returnS the following error:
    Can’t execute command: No such device or address (6).
    Is it a problem with my installation or do all the sticks I tried do not work for this?

  14. Alex, I am not sure about the exact reason. Do you run bccmd as root? Do you have more than one dongle connected to your PC and forgot to use the -d option?

  15. I am from the USA and have no access to buying the Fujitsu Siemens
    BLUETOOTH V2.0 USB-Stick. Does any one know where I can buy one?

  16. I’ve been trying to find DFU compatible bluetooth dongles here in the U.S. but with no luck, the closest thing I’ve come to is finding two BC4-ROM based ones. They support changes to the PSkeys and BTaddr, but for obvious reasons cannot be reflashed.

    Does anyone know of any dongles available in the U.S. that have the BC4-Ext chip (BC417)? I’ve been searching for the better part of 6 months with no luck. All the ones that are listed as DFU compatible above are out of stock or no longer carried by U.S. retailers.

    Any help would be much appreciated!

  17. Hi, I have an interesting device that I’m messing with:
    http://www.a7eng.com/products/embeddedblue/hci/eb502-HCI.htm
    My output is as follows:
    hci0: Type: USB
    BD Address: 00:0C:84:00:37:EA ACL MTU: 192:8 SCO MTU: 64:8
    HCI 18.2
    Chip version: BlueCore02-External
    Max key size: 56 bit
    SCO mapping: HCI

    sudo bccmd memtypes
    psi (0x0001) = Flash memory (0)
    psf (0x0002) = Flash memory (0)
    psram (0x0008) = RAM (transient) (2)

    hci0: Type: USB
    BD Address: 00:0C:84:00:37:EA ACL MTU: 192:8 SCO MTU: 64:8
    UP RUNNING PSCAN ISCAN
    RX bytes:5882 acl:0 sco:0 events:258 errors:0
    TX bytes:3113 acl:0 sco:0 commands:200 errors:0
    Features: 0xff 0xff 0x8f 0x78 0x18 0x18 0x00 0x80
    Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
    Link policy: RSWITCH HOLD SNIFF PARK
    Link mode: SLAVE ACCEPT
    Name: ‘BlueZ (0)’
    Class: 0x000100
    Service Classes: Unspecified
    Device Class: Computer, Uncategorized
    HCI Ver: 1.2 (0x2) HCI Rev: 0x5df LMP Ver: 1.2 (0x2) LMP Subver: 0x5df
    Manufacturer: Cambridge Silicon Radio (10)

    but when I go to replace my vendor ID I get the following (no matter WHERE I try to put it)
    sudo bccmd -d hci0 psset -s 0x0001 0x02bf 0x0002
    Can’t execute command: No such device or address (6)

    Any clues? or should I try a different dongle?

    –Andrew

  18. Your Chip version: BlueCore02-External
    Our Chip version: BlueCore4-External

    I don´t have a BlueCore02-External based dongle so i can´t test it but I´m quite sure BlueCore02 has a another configuration than V4 has. Maybe the buildup of the store is totally different…
    Try to look at the csr specs

    Greets

    Andi

  19. Hi to all,
    i’ve tried to set the PSKEY_LC_MAX_TX_POWER with the lower value in the POWER TABLE, due to limit the transmitting power of the device. I’ve used the BlueZ bccmd -d hci1 psset 0x0017 0x0000 and it has produced the output message “Can’t execute command: No such device or address (6)”. With the psget command at the same key address i’ve obtained the correct value of 0x0a. The device is a Digicom with the CSR chipset:

    root@tambuMacBook:/home/tambu/Desktop/bluez-utils-3.19/tools# ./hciconfig hci1 revision
    hci1: Type: USB
    BD Address: 00:02:72:42:0B:6B ACL MTU: 192:8 SCO MTU: 64:8
    HCI 16.4
    Chip version: BlueCore02-External
    Max key size: 56 bit
    SCO mapping: HCI

    Any idea of what’s the problem and corresponding solution?

    Thanks to all.

  20. I’ve tried to do the same in a BlueCore4-ext with the same result. I can read the keys but i can’t write them at all. The device is the internal of a Macbook. I’ve tried to do so under and Ubuntu 7.0.4 with Bluez-lib and Bluez-util installed with Synaptic tool, and using the bccmd of a “native” Bluez-util of the earliest version configured with the –enable-bccmd.
    I’m interested to know if there are some usb dongles witch are able to set their internal keys without doing anything else. I’d like to know the exact product’s names to buy one of them. Thanks to all.

  21. I’ve tried to set one key with the bccmd psset command, but without having success. Any idea?? The dongle is the internal device on my MacBook, wich has a BlueCore4-ext chipset. i’ve tried any psstore but nothing works well.

    Have you some alternatives to the dongles you’ve tried wich seems to work changing the keys? The Fujitsu and Toshiba were not available.

  22. Marco: again, be sure not to copy and paste from this blog, the x in 0x00 isn’t the x your console expects to be. Just type it in manually.

    Anyway the only working Dongles are the ones above. I am going to add the Aircable Host XR, but it’s quite expensive.

  23. Do we have any idea if the D-LINK DBT-122 works?I saw that the D-link dbt-120 works but i cant find it.

  24. Mail from aircable
    =====================
    Hi Vincent,

    The firmware is indeed upgradeable. But if you do, you probably kill it.

    We have special modifications in the radio setting that only
    work on this high powered hardware. If you miss a single
    setting of this you lose the radio.

    And we have done a lot to make the AIRcable Host XR this good.

    I wouldn’t do that. We have the latest Bluetooth stack there.
    There is nothing newer than that.

    # hciconfig -a
    hci0: Type: USB
    BD Address: 00:50:C2:58:50:17 ACL MTU: 310:10 SCO MTU: 64:8
    UP RUNNING PSCAN ISCAN AUTH
    RX bytes:481474 acl:6894 sco:0 events:36863 errors:0
    TX bytes:899372 acl:11014 sco:0 commands:10852 errors:0
    Features: 0xff 0xff 0x8f 0xf8 0x1b 0xf8 0x00 0x80
    Packet type: DM1 DH1 HV1
    Link policy: RSWITCH HOLD SNIFF PARK
    Link mode: SLAVE ACCEPT
    Name: ‘AIRcable Host XR (0)’
    Class: 0x3e0100
    Service Classes: Networking, Rendering, Capturing
    Device Class: Computer, Uncategorized
    HCI Ver: 2.0 (0x3) HCI Rev: 0x103b LMP Ver: 2.0 (0x3) LMP Subver: 0x103b

    Manufacturer: Cambridge Silicon Radio (10)

    # hciconfig hci0 revision
    hci0: Type: USB
    BD Address: 00:50:C2:58:50:17 ACL MTU: 310:10 SCO MTU: 64:8
    Build 4155
    Chip version: BlueCore4-External
    Max key size: 56 bit
    SCO mapping: HCI

    Regards
    Juergen
    Wireless Cables Inc.

  25. Dlink DBT-122 are Broadcom dongle.

    I’ve found a Fujitsu Siemens Bluetooth v2.0 usb stick and i’d like to reduce the sensing coverage radius to 5-6mt instead of the nominal value. So i’ve set the pskey MAX_TRANSMITTING_POWER (0x017) and DEFAULT_TRASMITTING_POWER (0x021) to zero. i’ve tried to scan devices through hcitool command but i discover all devices also at 10mt and over.

    I’ve tried to set also the Vendor and Product ID like you’ve wrote in this page, but with lsusb i retrieve always the factory values. I’ve tried to set the keys in all the stores available in 0x00 to 0x0f, but without success.

    Any idea?

  26. Did you get an error?
    After you set the value, have you tried to read the value again? Did it change?
    After you set the value, have you done a warm reset?

  27. Hi Martin,
    I’m using a Fujitsu-Siemens Bluetooth V2 USB Stick (CSR) under BackTrack 2. I can change the vendor and product id’s without problems using bccmd. However I cannot use dfutool to backup or upgrade the firmware. Every time I try any dfutool operation, after selecting the device, I get the following error:

    Can’t identify device with DFU mode

    Any guidance will be really appreciated!

  28. Solved!

    dfutool cannot work properly inside VMWare(v5.5.X). The native VMware USB port emulation (or pass through) interferes with the raw USB access required by dfutool.

  29. For those in the U.S. looking for BC4-Ext based dongles, I just received this one it’s a d-link dbt-120:

    http://www.bhphotovideo.com/c/product/311696-REG/D_Link_DBT_120_DBT_120_Wireless_Bluetooth_2_0.html

    I haven’t plugged it into my linux box yet as I’m at work, but it’s looking promising, as it has a BC417 chipset and an ST flash chip, it’s the most promising dongle I’ve been able to find in the states yet. I’ll post back with results after I get it home and start working with it.

  30. In my previous post I talked about a dongle I had just received. I got it home and got to working on it and…It supports all of the necessary functions for altering the Product ID, Vendor ID, and firmware. If you are looking for a dongle to modify, I can attest that the DBT-120 HW Ver: C1 works 100%.

  31. I’ve just bought one from reichelt.de which is a BlueCore4-External:
    DELOCK 61478 (Bluetooth Dongle USB Class 2, EDR V2.0, 80m)
    a good thing for just 15€ I think.

    The other, a DELOCK 61273 unfortunately was a BlueCore4-ROM, even if it was cheaper (6€).

  32. I’ve just received several of the DELOCK 61478 dongles, and they all have the BlueCore4-ROM chipset, not the BlueCore4-External, as stated above. Be careful.

    I ran hciconfig -a hci0 revision
    under Linux Mint.

  33. Further to my last post, I also just received a D-Link DBT-120 Rev C1 today. This does have the BlueCore4-External chipset.

  34. My D-Link DBT-120 is now running as a BT sniffer – WOW! Observations: had to reflash the firmware a 2nd time before calibrate would work properly. The first time I flashed it I was running attached to a USB extension lead, maybe it didn’t like that. I ran DFUtool & bccmd from the Backtrack 2 live-cd, rather than try to get those commands going in Linux Mint. Next job is to fit an MMCX antenna socket…

  35. You are right with the DELOCK Dongles, they changed them. Today I received another one and it is NOT BC4-External.
    I’m sorry! – Now I have to look for another inexpensive “external” Type, I should have ordered more than one the first time.

  36. a7eng eb502 usb bluetooth dongle.
    uses bluecore2 external.
    firmware IS upgradable
    BUT
    will not accept ANY firmware except the a7eng factory firmware.
    so do NOT buy it.
    And btw, using dfutool to extract the original firmware from the device, will work without errors BUT the firmware file (your buckup) will be actually corrupted, and u r not gonna be able to reload with original firmware.

  37. Hi,
    i´ve updated my Fujitsu Siemens V2.0 with AirSnifferDev56BC4.dfu , and my dongle is dead:) no reactions on bt3 or XP . what can i do ? Rgs.

  38. child007> hehe, i did exactly same today;)
    no reaction on bt3 or XP, bud you should be able to use sniffer.c ( or at least I am able). Maybe dev57 will help? you cam mail me to share progress.

  39. Please notice:

    Frontline seems to have somehow modified their PSKEYs or the Firmware layout. Therefore you can’t use new Firmware versions and flash them on your dongle. Seems to only work with older versions. As of now I can’t say for sure which version is the last one that works. Also have a look at this post.

  40. Hi m8!
    I can’t find Siemens dongle and DBT-120 is quite impossible to find! 🙁

    Have u ever tried DBT-122?! Thank u for attention! 🙂

  41. Narf – 2nd try …

    Hello everybody!

    I’ve destroyed my Fujitsu Stick with flashing AirSnifferDev59BC4.dfu. Before I checked the chipset – BC4-External.

    Any ideas to reactivate the stick? Maybe by flashing it externally? – I have a backup dfu file.

    I would appreciate your help a lot!! It was hard work to find and buy this stick.

    Thanks in advance!
    pììt

Comments are closed.