Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 5 Mar 2020 01:33:01 -0800 (PST)
From:      jason-fbsd-bluetooth@shalott.net
To:        freebsd-bluetooth@freebsd.org
Subject:   Re: ath3k USB bluetooth card not detected by ng_ubt, possible regression
Message-ID:  <alpine.LRH.2.22.394.2003050123230.19809@waffle.shalott.net>
In-Reply-To: <alpine.LRH.2.22.394.2003010129360.19809@waffle.shalott.net>
References:  <alpine.LRH.2.22.394.2003010129360.19809@waffle.shalott.net>

next in thread | previous in thread | raw e-mail | index | archive | help

> Hello.  I am trying to get an ath3k-based USB bluetooth adapter working. 
> I previously had this adapter working under FreeBSD, several years ago 
> (FreeBSD-8 or FreeBSD-9 timeframe); but it doesn't seem to work now on 
> my current FreeBSD-12 box.  After loading the firmware, it is not 
> detected by ng_ubt.
>
> The card is an ASUS USB-BT211, and shows up as vendor 0x0cf3 product 
> 0x3000.

> The switch from 0x3000 to 0x3002 seems to indicate that the card is, in 
> fact, loading the firmware correctly.

I tracked this down:

https://svnweb.freebsd.org/base?view=revision&revision=249178

Looks like this device (and many others) were blacklisted from the driver.

Reverting this commit and rebuilding ng_ubt.ko fixes my problem:

 	ubtath3kfw0 on uhub5
 	ubtath3kfw0: <vendor 0x0cf3 product 0x3000, rev 1.10/2.00, addr 4> on usbus1
 	ugen1.4: <vendor 0x0cf3 product 0x3000> at usbus1 (disconnected)
 	ubtath3kfw0: at uhub5, port 2, addr 4 (disconnected)
 	ubtath3kfw0: detached
 	ugen1.4: <vendor 0x0cf3 product 0x3002> at usbus1
 	ubt0 on uhub5
 	ubt0: <vendor 0x0cf3 product 0x3002, class 224/1, rev 1.10/0.01, addr 4> on usbus1

 	# hccontrol -n ubt0hci inquiry
 	Inquiry result, num_responses=1
 	Inquiry result #0
 	        BD_ADDR: 75:10:27:18:59:c5
 	        [...]


Can someone explain why these devices were blacklisted from the ng_ubt 
driver?  It seems like the devices will fail to work if the firmware is 
not loaded to the device before ng_ubt is loaded into the kernel; but it 
seems like the failure mode is just that those devices don't work in that 
case.  So blacklisting them from the driver seems a lot worse...

Couldn't the driver do something like just log a warning that if the 
device isn't working, unload ng_ubt, ensure that any required firmware is 
pushed, and then reload it?  Or something else more clever?

Thanks.


  -Jason




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?alpine.LRH.2.22.394.2003050123230.19809>