[RFC] rc.d integration for the bluetooth subsystem
Vladimir Grebenschikov
vova at fbsd.ru
Mon Nov 7 23:01:08 PST 2005
В пн, 17/10/2005 в 10:13 -0700, Maksim Yevmenkin пишет:
> Panagiotis,
>
> it appears i have missed your original email :( not a big problem - i
> have found it in the archive. please read my comments inline.
>
> >> I've been playing with integrating the bluetooth subsystem into our
> >> rc.d infrastructure and I'd like to submit the results of my
> >> efforts for review. My testing has been centered around my USB
> >> bluetooth dongle and I know that it works, but I suppose other
> >> bluetooth devices should work as well. I have taken the existing
> >> rc.bluetooth script (that is not installed by default) and
> >> converted it to rc.d, renaming it as 'bluetooth'. I also added a
> >> couple of other scripts for hcsecd and sdpd, that are started from
> >> bluetooth, but can also function independently, id so desired.
> >> Finally I have added a devd configuration file that makes sure the
> >> bluetooth script gets started on insertion and removal of the USB
> >> dongle.
>
> that is great. thanks for doing the work! it seems we have been working
> on this in parallel :) about a week ago i have committed (into -current)
> hcsecd(8) and sdpd(8) rc.d scripts. they are very similar to what you
> have done. please see
>
> http://www.freebsd.org/cgi/cvsweb.cgi/src/etc/rc.d/hcsecd
>
> http://www.freebsd.org/cgi/cvsweb.cgi/src/etc/rc.d/sdpd
>
> http://www.freebsd.org/cgi/cvsweb.cgi/src/etc/defaults/rc.conf
>
> for more details.
>
> >> With these changes, when I plug in my USB bluetooth dongle, all the
> >> necessary initialization happens behind the scenes and I can start
> >> using my bluetooth peripherals right away. When I unplug the dongle
> >> all the services stop and the necessary shutdown operations are
> >> performed on the bluetooth stack. There is still some work left,
> >> like specifying different flags for sdpd & hcsecd, but the defaults
> >> work fine.
>
> that sounds just fine. once again - do not worry about hcsecd(8) and
> sdpd(8) scripts anymore - they are done.
>
> >> In order to test this stuff you have to:
> >>
> >> - copy bluetooth, hcsecd and sdpd into /etc/rc.d - copy ubt.conf
> >> into /usr/local/etc/devd (creating it if necessary), or add its
> >> contents to /etc/devd.conf - add a line in /etc/rc.conf with:
> >> bluetooth_enable="YES"
> >>
> >> In an eventual merge into the base system the devd configuration
> >> should be merged into /etc/devd.conf and /etc/defaults/rc.conf
> >> should contain the following line instead: bluetooth_enable="NO"
> >>
> >> I'd appreciate any comments you may have.
>
> devd(8) configuration (ubt.conf) looks fine. i can merge this info
> devd.conf for you. hcsecd(8) and sdpd(8) already committed into
> -current. i have also created bluetooth section in the
> /etc/defaults/rc.conf file.
>
> i have few comments about my original rc.bluetooth script.
>
> 1) it probably should not load any kernel modules. the problem is that
> when one (or more) bluetooth kernel modules compiled into the kernel the
> kldstat(8) check may fail. this has to do with the way kldstat(8) prints
> the results and the way rc.bluetooth grep's through them.
>
> 2) original rc.bluetooth is very rigid. things like device name, device
> class, etc. are hardwired into the script. so i'd like to have a bit of
> flexibility here, i.e. ability to specify per device
>
> - device name (change_local_name)
>
> - device class (write_class_of_device)
>
> - should device be "visible"/discoverable by default (write_scan_enable)
>
> - should device request authentication (write_authentication_enable)
>
> - should device use encryption (write_encryption_enable)
>
> - should device request role switch (write_node_role_switch)
>
> and maybe few others.
>
> 3) i'd like to have some way to execute a few hccontrol(8) commands
> after default setup was done. perhaps this could be done with some sort
> of bluetooth.local rc.d script that will be executed after main script.
> by default it should be empty. another way to do it is to have something
> along the bluetooth_extra_commands variable in rc.conf.
>
> > Great ! It just works, Thank you.
> >
> > I've added bthidd script (in attachment) to start human interface
> > daemon (bt mouse in my case).
After recent upgrade of 7-CURRENT I have do not working bthidd.
Something bad on boot here. bthidd just not started or failed on boot.
If I just turn off and then turn on USB bt dongle - it starts work.
No any related messages in /var/log/messages.
I have
bluetooth_enable="YES"
bthidd_enable="YES"
in /etc/rc.conf
and
% cat /usr/local/etc/devd/ubt.conf
# When a USB Bluetooth dongle appears, start the bluetooth subsystem.
attach 100 {
device-name "ubt[0-9]+";
action "/etc/rc.d/bluetooth start $device-name";
};
detach 100 {
device-name "ubt[0-9]+";
action "/etc/rc.d/bluetooth stop $device-name";
};
%
Does anybody has working on boot bthidd with recent scripts ?
> thanks,
> max
--
Vladimir B. Grebenschikov
vova at fbsd.ru
More information about the freebsd-bluetooth
mailing list