[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bluetooth-dev] new release

Hi All,
Finally we got a new release for you. See attached readme 
for details.


Known problem : 
* If using Ericsson modules with firmware P9A or earlier it has
been confirmed that there are occasionally garbage data on the
uart (especially when running at higher speeds). This causes HCI
to loose track of the data packets and consequently the stack
malfunctions. Firmware P9B worked best for us.

Unfortunately we haven't had a lot of time to test the code on a
standard linux machine, therefore there might still be some bugs 
left when running it in kernel mode. Especially when it comes to
detecting erroneous data on the uart. To avoid any unwanted 'side
effects' on your computer please use the userstack.

Perhaps CRS:s extra layer on top of HCI could solve this, is there 
anyone that has tried adding this to the stack successfully ?

As usual, please send any bugreports or comments to 

AXIS Bluetooth Team

Bluetooth Driver for Linux Kernel v2.0 and v2.2

These files are work in progress. For more information on Bluetooth 
on Linux see http://developer.axis.com where you can find the newest 
versions of the software.


What has happened lately

Oct 30 2000

Finally, a new release!

There has been quite a few changes and it is hard to include everything
in this text. However, we will try to make a quick introduction of the 
new functionality.

*** Kernel Stack ***

- We now support the use of several tty:s (currently 7, ttyBT0-ttyBT6) and 
  the control of the stack has been moved to a dedicated tty called ttyBTC 
  (minor 7)
- Improved interface between user mode tty and kernel.
- More ioctls for HCI commands
- Improved SDP which now uses a user mode database for queries.
- Added functionality for choosing different HW (init stuff)
- Added scheduling of cmd queueing for USB
- Lots of bug fixes

*** Comment ***

    As of today we have no client functionality in SDP due to changes
    in the design. However, as server Serial/LAN/DialUP profile is 
    supported. This will be fixed soon.

*** User Mode Applications ***

- New SDP server database application using XML files. 
  See /apps/sdp_server/README for details.
- Command line history
- Now pppd works together with the user mode stack (using pty:s)
- Using syslog for most debug (see /var/log/messages)

Please let us know if there are any unclear issues or errors in this README. 
Comments are appreciated and if there are someone that feels an urge of 
making it more complete please contact us or send us a text fragment and we 
will happily include it !

There are still patches left to include but due to heavy workload we have not
had time to add them all. However, in the future if a patch is sent to us
reasonably fast (within 2 weeks) after a new release we should be able to 
merge it in the stack.

Finally, we would also like to thank all contributors on the stack for 
comments and patches etc. Once we get our open CVS up and running this stack 
should be very useful for any bluetooth developer !!

Keep up the good work !

Best regards 
Bluetooth Team,
Axis Communications


How to build and install the AXIS Bluetooth Stack

# Unpack the archive:

tar xvfz <name of archive>

# Create the bluetooth stack module and all applications (both for use
  with the kernel version of the stack and the user mode version):

cd bluetooth
source init_env

# Install the applications in /usr/local/bin and the SDP configuration
  file in /etc (must be done as root):

make install

# If the BT device nodes have not been created previously then do (as root):

make devs

# Insert the module into the kernel (must be done as root):

insmod src/bt.o

# To get debug messages in kernel start another window and issue:

tail -f /var/log/messages 

(or whatever file is set in /etc/syslog.conf)



     Both short and long options may be used whatever suits best.

     syntax:  ./btd [options]


              -u, --physdev <uart device>
              sets which uart device that will be used by the stack
              default: ttyS2
              -b, --btdev <bluetooth device>
              sets which bluetooth device that will be used from application
              default: ttyBT0
              -s, --speed <speed>
              sets uart speed
              9600, 19200, 38400, 57600, 115200, 230400, 460800
              default: 115200 baud
              "-r server", --server
	      sets application role to server
	      "-r client", --client
              sets application role to client)
              default: server
              -i, --hwinit <HW initialisation> 
              hw specific initialization
              ericsson, digi (DigiAnswer PC card), csr, usb, none
              default: ericsson

              -m, --cmdmode
              enters command line mode
              default: skip command line mode

              -n, --local-name
              prefix used for the local bluetooth device name
              default: nothing

              -d, --local <local ip>
              Sets local ipadress in pppd options

              -D, --remote <remote ip>
              Sets remote ipaddress in pppd options
              -R, --reset
              reset bluetooth hardware before use
              default: no reset

              -e, --modem
              Use modem emulation (used when emulate modem in windows dialup. 
              Can also be done from command line mode. 
	      default: on

	      -S, --unixsock use local unix socket instead of phys port
	      Used together with hci emulation to test stack locally
	      (user mode stack only)
	      -T, --tcpsock <ipaddr:port> use tcp socket instead of 
	      phys port. Used together with hci emulation to test 
	      stack over any TCP/IP based network
	      Server listens on <:port>, client tries to connect to 
	      <ipaddr:port>. (user mode stack only)

     e.g if using ericsson module at 460800 baud and acting as server
     ./btd --speed 460800 --hwinit ericsson

     if using HW that req no init and acting client with command line interface
     ./btd -r client --hwinit none

     if using non-default devices
     ./btd --physdev /dev/ttyS2 --btdev /dev/ttyBT3 [options...]

     if using the stack in user mode over a local UNIX socket.
     Do the following in separate windows
     Server: ./btd --cmdmode --unixsock
     Client: ./btd --cmdmode --unixsock --client

     if using the stack in user mode over a TCP socket.
     Do the following on separate computers connected to the 
     same network
     Server: ./btd --cmdmode --tcpsock <:port>
     Client: ./btd --cmdmode --tcpsocket <ipaddr:port> --client

What do the menu options do?

con <xx:xx:xx:xx:xx:xx> <line> <srv channel> <profile>
 Connect to BT device with BD_ADDR <xx:xx:xx:xx:xx:xx> on line 
 <line> with RFCOMM server channel <srv channel> <profile (not used)>

 Profile is one of:
  0 - Serial profile
  1 - Lan profile
 /* FIXME -- currently there are no client functionality in SDP due to 
    adoptions to the new SDP server using XML. Thus we do not able to 
    connect profiles as client. */
disc <line>

  Disconnect the connection with line <line>, 
send <nbr bytes> <nbr repeats>
 Just send chunks of data. <nbr bytes> are sent <nbr repeats> 
 times. Data is sent using the RFCOMM protocol layer

me <1/0>
  Turn modem emulation on/off. Modem emulation is used on the 
  server side to fool a windows client that it is talking to a 
  modem. The emulation answers OK to all AT*\r\n sequences. 
  When it receives ATD*\r\n it quits and starts ppp instead.

setbd <xx:xx:xx:xx:xx:xx>
  Set the BT device BD_ADDR to <xx:xx:xx:xx:xx:xx>
  (Currently Ericsson specific)

  Get the BT device BD_ADDR

  Reset the BT device.

  Quit btd and start ppp to the peer instead.

  Just quit.


How to setup a session between two units

Server side:

1. btd --reset --speed 115200 -i ericsson

Client side:

1. btd --reset --speed 115200 - i ericsson -r client
2. Connect to the other unit by doing
   connect <bd address> 0


How to use the stack in user mode instead of in the kernel

1) Build the applications according to the instructions above.

1) Start the SDP server as 'sdp_user /etc/sdp.xml &'.

3) Then run btduser (as root) with the same options as with the standard
   btd application (see above).


How to setup a session without any bluetooth hardware

To make the stack work without any hardware HCI_EMULATION must be switched
on in the file btconfig.h and the stack must be recompiled.
You will see a note in the debug messages when starting the stack if hci
emulation really is used or not.

* Note *

The HCI emulation as of today simply converts some hci commands to the 
corresponding events and simply forwards all acl/sco data.
If you get messages from the stack that something fails when initiating the
stack it is because those hci commands are not supported in the hci emulator.
Anyone that wants are welcome to improve it and send us a patch. For example,
there could be network delays/ packet losses included and different kinds of
hardware can be simulated.

There are three ways depending on how you want to test the stack.
The first one works both when running the stack in kernel and when running
it in user mode. The other two (2 and 3 below) works only in user mode.

See above for details on command options

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

1) Using a serial cable (null modem)

Connect 2 Linux PC with a null modem cable, and start the btd application
as server as one side and btd as client on the other side.

Server side:
1. start btd with the option
   btd --physdev <phys device> --speed <speed> --cmdmode 
   --local <local ip> --remote <remote ip>

Client side:
1. start btd with the option
   btd --physdev <phys device> --speed <speed> --client --hwinit none

2. When the menu shows and server also are setup and initialized type:
   connect 11:22:33:44:55:66 <line 0> <srv ch> <profile> 
   (BD address is ignored)
   If connection was successful you will now receive a handle

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

2) Using a local unix socket on one computer

Server side:
1. btd --cmdmode --hwinit none

Client side:
1. btd --client --hwinit none

2. When the menu shows and server also are setup and initialized type:
   connect 11:22:33:44:55:66 <line 0> <srv ch> <profile> 
   (BD address is ignored)
   If connection was successful you will now receive a handle

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

3) Using a network tcp socket between two computers

     if using the stack in user mode over a TCP socket.
     Do the following on separate computers connected to a network

Server side:
1. btd --tcpsock <:port>
Client side:
1. Client: ./btd --tcpsocket <ipaddr:port> --client

2. When the menu shows and server also are setup and initialized type:
   connect 11:22:33:44:55:66 <line 0> <srv ch> <profile> 
   (BD address is ignored)


It does not work, what am I doing wrong? 

FIXME --  add FAQ 

For debug when running in kernel look in /var/log/messages, /var/log/debug or
whatever file is specified in /etc/syslog.conf

If you think you have found a bug please switch on all debug in btdebug.c 
(or switch on the define BTD_GLUE_DEBUG in btd.c) and send the logs to