Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

I am trying to set the (inquiry) transmit power of Bluetooth dongles with both Broadcom and CSR chipsets using hciconfig, e.g.:

hciconfig hci0 inqtpl 3

But whatever valid parameter I pass, reading the value afterwards always yields 0, like so:

hci0:   Type: BR/EDR  Bus: USB
        BD Address: 00:02:72:D6:6B:25  ACL MTU: 1021:8  SCO MTU: 64:1
        Inquiry transmit power level: 0

When I pass invalid values, I get an error message:

Can't set inquiry transmit power level on hci0: Input/output error (5)

So obviously the parameter is checked for validity. I am pretty sure it's checked by the chipsets, as I get the same results when sending the appropriate HCI commands manually.

Both chipsets also state they support this feature:

# hciconfig hci0 features
hci0:   Type: BR/EDR  Bus: USB
        BD Address: 00:02:72:D6:6B:25  ACL MTU: 1021:8  SCO MTU: 64:1
        Features page 0: 0xbf 0xfe 0xcf 0xfe 0xdb 0xff 0x7b 0x87
                [...]
                <err. data report> <non-flush flag> <LSTO> <inquiry TX power>
                [...]

Am I getting something wrong, or is it just by occasion that both chipsets I'm using do not support this feature?

share|improve this question
    
Update: I just received a note from a dongle maker stating this feature has been blocked due to restrictions opposed by the European CE marking. –  domsom Jan 4 '13 at 10:18

1 Answer 1

Just to double check:

can you get the maximum and default value via bccmd psget? ex:

bccmd psget 0x0017

And once those values are recieved, can you try something in between that range by setting 0x1 for instance?

Also iirc, 1 is maximum of the hardware and 0.5 is 50% transit power, tho that can be driver specific so that might be rubbish info in your case.

I was almost sure that there is a store proceedure you need to call after setting the transit power in order for the device to start using it, to prevent the device from trying to set a faulty transit power right away.

Does this help anything:
http://www.spinics.net/lists/linux-bluetooth/msg16546.html

share|improve this answer
    
Thanks for your answer, I just spent some time with bccmd. bccmd psget 0x0017 yields Can't execute command: No such device or address (6) with my CSR module, while 0x0001 works. bccmd pslist returns a rather short list of 7 commands that doesn't include 0x0017. Besides, bccmd buildname states odj_4hci_rom_vm_bt2.1_23e_0806121029_encr128. Maybe the firmware is just too old? Can I update it? –  domsom Dec 18 '12 at 12:57
    
I also patched bccmd to support reading/setting the default & max tx powers (chapters 3.9 & 3.10 in eestud.kku.ac.th/~moo/datasheet/Bluetooth/BlueCore/…). I have been able to set those values to either 0 or 4, nothing else. Setting those values doesn't seem to have any practical impact on the dongle's range, though. Interestingly though hciconfig inqtpl now reports 4 if I set the values to 4 though... –  domsom Dec 18 '12 at 13:01

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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