Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 05 Dec 2005 10:39:32 -0600
From:      Eric Anderson <anderson@centtech.com>
To:        Maksim Yevmenkin <maksim.yevmenkin@savvis.net>
Cc:        bluetooth <bluetooth@freebsd.org>
Subject:   Re: No route to host for bluetooth devices
Message-ID:  <43946D44.2070907@centtech.com>
In-Reply-To: <437E129A.9000204@savvis.net>
References:  <437B2E58.50709@centtech.com> <437B52FF.9040407@savvis.net>	<437B5CE2.5000601@centtech.com> <437B93CF.4000403@savvis.net>	<437BA490.1010704@centtech.com> <437BAF32.5030502@savvis.net>	<437C8547.3060708@centtech.com> <437CC544.6080509@savvis.net> <437D32F7.10706@centtech.com> <437DCBF8.1080000@centtech.com> <437E129A.9000204@savvis.net>

next in thread | previous in thread | raw e-mail | index | archive | help
Maksim Yevmenkin wrote:

> Eric,
>
>>>>> Well, here's more information.  First, it's reproducable every 
>>>>> time I boot up.  Doing:
>>>>> /etc/rc.d/bluetooth start ubt0
>>>>> does not fix it by itself, but doing:
>>>>> /etc/rc.d/bluetooth stop ubt0
>>>>> /etc/rc.d/bluetooth start ubt0
>>>>> does.
>>>>
>>>>
>>>> now, i really puzzled. because device fails on to start at boot 
>>>> time, /etc/rc.d/bluetooth should have backed out and removed all 
>>>> netgraph nodes it tried to create (except device node and socket 
>>>> nodes). so i do not understand why do you need to do 'stop' before 
>>>> 'start'. 'stop' should really be a noop in this case.
>>>>
>>>> could you please do the following
>>>>
>>>> 1) do a fresh boot with bluetooth device turned on
>>>>
>>>> 2) after system boots (and bluetooth device failed to start) please 
>>>> run as root
>>>>
>>>> # ngctl li
>>>
>>>
>>> There are 7 total nodes:
>>>   Name: ngctl992        Type: socket          ID: 0000001d   Num 
>>> hooks: 0
>>>   Name: ubt0l2cap       Type: l2cap           ID: 00000017   Num 
>>> hooks: 3
>>>   Name: ubt0hci         Type: hci             ID: 00000013   Num 
>>> hooks: 3
>>>   Name: btsock_l2c      Type: btsock_l2c      ID: 00000004   Num 
>>> hooks: 1
>>>   Name: btsock_l2c_raw  Type: btsock_l2c_raw  ID: 00000003   Num 
>>> hooks: 1
>>>   Name: btsock_hci_raw  Type: btsock_hci_raw  ID: 00000002   Num 
>>> hooks: 1
>>>   Name: ubt0            Type: ubt             ID: 00000001   Num 
>>> hooks: 1
>>
>
> hmm... that does not make much sense to me. somehow you still have all 
> nodes connected even if bluetooth device failed to initialize! that 
> explains why do you need 'stop' command before 'start'.
>
> just a crazy idea. please double that you are not initializing device 
> twice, i.e. you use new rc.d scripts and some leftovers from old 
> system. or may be you have devd(8) configuration in both /etc in 
> /usr/local/etc?
>
>>>>> I also tried a fresh boot, then switching the bluetooth off, 
>>>>> waiting about 20 seconds, and flipping it back on, which *did* in 
>>>>> fact work. I may not have waited long enough the previous time 
>>>>> that failed.
>>>>
>>>>
>>>> ah, ok. could you please check the /var/log/messages file to see if 
>>>> you get a message saying ubt0 is detached/attached?
>>>
>>>
>>> Here's the snippet upon boot:
>>>
>>> Nov 17 19:31:32 neutrino kernel: ubt0: ALPS UGX, rev 1.10/11.68, addr 3
>>> Nov 17 19:31:32 neutrino kernel: ubt0: ALPS UGX, rev 1.10/11.68, addr 3
>>> Nov 17 19:31:32 neutrino kernel: ubt0: Interface 0 endpoints: 
>>> interrupt=0x81, bulk-in=0x82, bulk-out=0x2
>>> Nov 17 19:31:32 neutrino kernel: ubt0: Interface 1 (alt.config 5) 
>>> endpoints: isoc-in=0x83, isoc-out=0x3; wMaxPacketSize=49; nframes=6, 
>>> buffer size=294
>>
>
> [...]
>
>>> Nov 17 19:31:41 neutrino kernel: ng_hci_process_command_timeout: 
>>> ubt0hci - unable to complete HCI command OGF=0x3, OCF=0x3. Timeout
>>
>
> device failed to initialize and rc.d/bluetooth should have cleaned the 
> nodes, but it did not happen
>
>>> Nov 17 19:31:45 neutrino sdpd[659]: Could not bind control socket. 
>>> Permission denied (13)
>>
>
> hmm... this is bad too. can you double check if you have sdpd running?
>
>>> now I'll run the bluetooth stop, which produces no output.
>>>
>>> ngctl li now looks like:
>>> There are 5 total nodes:
>>>   Name: ngctl1015       Type: socket          ID: 00000020   Num 
>>> hooks: 0
>>>   Name: btsock_l2c      Type: btsock_l2c      ID: 00000004   Num 
>>> hooks: 0
>>>   Name: btsock_l2c_raw  Type: btsock_l2c_raw  ID: 00000003   Num 
>>> hooks: 0
>>>   Name: btsock_hci_raw  Type: btsock_hci_raw  ID: 00000002   Num 
>>> hooks: 0
>>>   Name: ubt0            Type: ubt             ID: 00000001   Num 
>>> hooks: 0
>>
>
> that is fine. that is what the output should look like when device is 
> failed to initialize.
>
>>> Now I ran bluetooth start, which produces no output, and nothing in 
>>> /var/log/messages.
>>>
>>> ngctl li now looks like this:
>>> There are 7 total nodes:
>>>   Name: ngctl1045       Type: socket          ID: 0000002c   Num 
>>> hooks: 0
>>>   Name: ubt0l2cap       Type: l2cap           ID: 00000026   Num 
>>> hooks: 3
>>>   Name: ubt0hci         Type: hci             ID: 00000022   Num 
>>> hooks: 3
>>>   Name: btsock_l2c      Type: btsock_l2c      ID: 00000004   Num 
>>> hooks: 1
>>>   Name: btsock_l2c_raw  Type: btsock_l2c_raw  ID: 00000003   Num 
>>> hooks: 1
>>>   Name: btsock_hci_raw  Type: btsock_hci_raw  ID: 00000002   Num 
>>> hooks: 1
>>>   Name: ubt0            Type: ubt             ID: 00000001   Num 
>>> hooks: 1
>>
>
> and that is fine too - this is what output should look like when all 
> nodes are properly connected.
>
>>> Now I wiggle my mouse, and I see this in /var/log/messages:
>>> Nov 17 19:47:58 neutrino bthidd[603]: Accepted control connection 
>>> from 00:07:61:31:27:15
>>> Nov 17 19:47:58 neutrino bthidd[603]: Accepted interrupt connection 
>>> from 00:07:61:31:27:15
>>>
>>> and my mouse now works.
>>>
>>>>> Oddly enough, I never had a problem before now.  I previously 
>>>>> started the bluetooth stuff from rc.local.  The only things I have 
>>>>> changed are: updated to latest -current, removed inet6 from 
>>>>> kernel, rebuilt world/kernel, switched to new rc.d bluetooth 
>>>>> scripts.  I can try anything you like.
>>>>
>>>>
>>>> one thing you could try to do is to comment out ubt0 section in 
>>>> /etc/devd.conf and go back to old style rc.bluetooth script to see 
>>>> if you have the same problem. if you do - then its not bluetooth 
>>>> related, if you dont - then its related to new bluetooth rc.d scripts.
>>>
>>>
>>> I can do that if you'd like..
>>
>
> yes please, if you can.
>
>> Something else I just tried:  booted up, no mouse as usual.  Ran 
>> /etc/rc.d/bluetooth start ubt0, and got this error:
>>
>> # /etc/rc.d/bluetooth start ubt0
>> /etc/rc.d/bluetooth: ERROR: Unable to setup Bluetooth stack for 
>> device ubt0
>>
>> and mouse still does not work..
>>
>> Then, ran it again:
>> # /etc/rc.d/bluetooth start ubt0
>>
>> no error, and voila! my mouse works.  Didn't run the 'stop' part at 
>> all, just the 'start' twice.
>
>
> again the explanation for this is: after the boot device failed to 
> initialize, but for whatever reason, all nodes are still connected. 
> when you do the 'start' command it tries to connect nodes, but it 
> fails because nodes are already connected. because it fails - it tries 
> to clean up after itself and removes all the nodes. thus resetting 
> back to defaults. the next 'start' runs fine, because now everything 
> as it should be.
>
> we need to figure out why nodes are still connected after your device 
> failed on boot.
>
> thanks,
> max


After upgrading to the latest current, this problem is gone.  Go 
figure.  Maybe I caught it somewhere in between, I have no idea.

Eric



-- 
------------------------------------------------------------------------
Eric Anderson        Sr. Systems Administrator        Centaur Technology
Anything that works is better than anything that doesn't.
------------------------------------------------------------------------




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?43946D44.2070907>