WRAP Access Server

User's and Developer's Guide

Bluegiga Technologies

Bluegiga Technologies reserves the right to alter the hardware, software, and/or specifications detailed herein at any time without notice, and does not make any commitment to update the information contained herein. Bluegiga Technologies assumes no responsibility for any errors which may appear in this manual. Bluegiga Technologies' products are not authorized for use as critical components in life support devices or systems.

The WRAP is a registered trademark of Bluegiga Technologies. iWRAP, WRAP THOR and WRAP Access Server are trademarks of Bluegiga Technologies.

The Bluetooth trademark is owned by the Bluetooth SIG Inc., USA, and is licensed to Bluegiga Technologies.

ARM and ARM9 are trademarks of ARM Ltd.

Linux is a trademark of Linus Torvalds.

All other trademarks listed herein belong to their respective owners.


Table of Contents
1. Introduction
1.1. Licenses and Warranty
1.2. Bluegiga Technologies Contact Information
2. Getting Started with the Access Server
2.1. Powering Up
2.2. WWW Interface
2.3. Shell Prompt Access
2.3.1. Management Console
2.3.2. Accessing Remotely
2.3.3. Transferring Files to/from the Access Server
2.4. Introduction to Configuration
2.5. Using the Setup WWW Interface
2.6. Using the setup Command Line Application
2.7. Resetting Configuration
3. Using the System
3.1. Network Interfaces
3.2. Bluetooth
3.2.1. iWRAP Password Protection
3.2.2. LAN Access Profile
3.2.3. Serial Port Profile
3.2.4. Object Push and File Transfer Profile
3.2.5. PAN Profiles
3.2.6. Bluetooth Range Changing
3.2.7. BTCLI - iWRAP Command Line Interface Utility
3.2.8. serialbluetooth
3.2.9. Resetting Bluetooth Basebands
3.3. Compact Flash Cards
3.3.1. Compact Flash GPRS Cards
3.3.2. Compact Flash GPS Card
3.3.3. Compact Flash WiFi Cards
3.4. USB Memory Dongles
3.5. Servers
3.5.1. Finder
3.5.2. ObexSender
3.5.3. SMS Gateway Server
3.5.4. User Level Watchdog
3.5.5. Remote Management
3.5.6. FTP
3.5.7. Web Server
3.5.8. SNMP
3.5.9. OpenVPN
3.5.10. SSH
3.5.11. Telnet
3.6. Utilities
3.7. Real Time Clock
3.8. Time Zone
3.9. System Re-Install and Upgrade
4. Bluetooth Technology Overview
4.1. Frequency Bands and Channel Arrangement
4.2. Power Considerations
4.3. Radio Frequency Propagation
5. Software Development Kit
5.1. Introduction to SDK
5.2. Installing SDK
5.2.1. WRAP Access Server Software Development Environment System Requirements
5.2.2. Questions Asked by the Install Script
5.3. Creating Application
5.3.1. Application Examples
5.3.2. Creating a New Project
5.3.3. Building From the Command Line
5.3.4. Transferring an Application to the WRAP Access Server
5.3.5. Running an Application Transferred to Access Server
5.3.6. Using Debugger (GDB/DDD)
6. iWRAP - Bluetooth Interface
6.1. Terms
6.2. Starting the iWRAP Servers
6.3. Writing iWRAP Applications
6.3.1. Forklistener
6.3.2. iWRAP Client
6.4. Commands Controlling iWRAP
INFO -- Get basic info
QUIT -- Close iWRAP connection
SET -- Change parameters
SAVE -- Save iWRAP settings
LOAD -- Run iWRAP command script
PING -- Ask if connection is alive
PONG -- Connection is alive
ECHO -- Send a message to other iWRAP clients
LOCK -- Lock other iWRAP clients
UNLOCK -- Unlock other iWRAP clients
SHUTDOWN -- Close iWRAP server
SLEEP -- Wait a second
6.5. Finding Bluetooth Devices
INQUIRY -- Search for other devices
NAME -- Find a friendly name
6.6. Making a Bluetooth Connection
CALL -- Connect to other device
CONNECT -- Connected to other device
NO CARRIER -- Disconnected from other device
RING -- Other device is calling you
RINGING -- Call in progress
CLOSE -- Disconnect
LIST -- List connections
STATUS -- Status of a connection
6.7. Service Discovery
SDPSEARCH -- Browse SDP Records
SDPATTR -- Browse SDP Records
SDPQUERY -- Browse SDP Records
SDP bdaddr -- Check devices SDP
SDP ADD -- Add entry to local SDP
SDP DEL -- Delete entry for local SDP
SDP LIST -- List local SDP
6.8. Example Sessions
6.9. Error Codes
6.10. OBEX Libraries
6.10.1. libobex
6.10.2. libobexclient
6.10.3. obexbrowser
7. I/O API
7.1. Led and Buzzer API
7.2. GPIO API
8. Advanced Use Cases for Access Server
8.1. Making Access Server Secure
8.2. Digital Pen
8.3. SPP to Socket
9. Certification Information and WEEE Compliance
10. About Bluegiga Technologies
A. Directory Structure
B. Setup Options
B.1. Security settings
B.2. Generic settings
B.3. Network settings
B.3.1. Default interface settings
B.3.2. Ethernet cable settings
B.3.3. WiFi hostap settings
B.3.4. WiFi hermes settings
B.3.5. GPRS settings
B.4. Bluetooth settings
B.4.1. Lan access profile settings
B.4.2. Personal area network user profile settings
B.4.3. Personal area network generic networking profile settings
B.4.4. Personal area network network access point profile settings
B.4.5. Object push and file transfer profile settings
B.4.6. Serial port profile settings
B.5. Applications
B.5.1. FTP server settings
B.5.2. ObexSender settings
B.5.3. SMS gateway settings
B.5.4. wpkgd settings
B.6. Advanced settings
B.6.1. Reboot (confirm)
B.7. Summary of Setup Options
C. Software Licenses
D. Supported Hardware

Chapter 1. Introduction

WRAP™

Bluegiga's WRAP product family offers for device manufacturers, integrators, companies and developers a simple and fast way to set-up wireless communication systems between standard or proprietary devices, networks, machines and instruments.

WRAP Access Server™

WRAP Access Server™ is a cutting edge wireless Bluetooth router. It supports multiple communication standards including Ethernet, WiFi, and GSM/GPRS enabling full media-independent TCP/IP connectivity. WRAP Access Server™ is easy to deploy and manage in existing wired and wireless networks without compromising speed or security. For very fast deployment, WRAP Access Server™ configurations can easily be copied from one device to another using USB memory dongles. The device can be conveniently managed and upgraded remotely over SSH secured links and by supporting SNMP (Simple Network Management Protocol), WRAP Access Servers can also be connected to customer's management and monitoring systems.

Usage scenarios and applications:

Key features:


1.1. Licenses and Warranty

Warning

Bluegiga Technologies is hereby willing to license the enclosed WRAP product and its documentation under the condition that the terms and conditions described in the License Agreement are understood and accepted. The License Agreement is supplied within every WRAP product both in hard copy and soft copy (file \doc\eula.pdf on the WRAP Access Server SDK CD-ROM). The use of the WRAP product will indicate your assent to the terms. If you do not agree to these terms, Bluegiga Technologies will not license the software and documentation to you, in which event you should return this complete package with all original materials, equipment, and media.

Some software components are licensed under the terms and conditions of an open source license. Details can be found in Appendix C. Upon request, Bluegiga will distribute a complete machine-readable copy of the source of the aforementioned open source software components during a period of three (3) years from the order date of the product. Delivery costs of the source code will be charged from the party requesting the source code.

The Bluegiga WRAP Product Limited Warranty Statement is located in the file \doc\warranty.pdf on the WRAP Access Server SDK CD-ROM.


1.2. Bluegiga Technologies Contact Information

Please see https://www.bluegiga.com/ for news and latest product offers. For more information, contact .

Please check https://www.bluegiga.com/techforum/for software and documentation updates.

Please contact if you need more technical support. To speed up the processing of your support request, please include as detailed information on your product and your problem situation as possible.

Please begin your email with the following details:

  • Access Server product type

  • Access Server product serial number

  • Access Server software version

  • End customer name

  • Date of purchase


Chapter 2. Getting Started with the Access Server

The WRAP Access Server can be controlled via the WWW interface, by entering commands and using applications at Access Server shell prompt or by sending and/or retrieving files to/from the Access Server.

Note: The default username is root with password buffy.


2.1. Powering Up

To get started with the WRAP Access Server, connect it to your local area network (LAN) using an Ethernet cable and connect the power adapter. The Access Server will power up and retrieve the network settings from your network's DHCP server.

The WRAP Access Server will also use Zeroconf (also known as Zero Configuration Networking or Automatic Private IP Addressing) to get an unique IP address in the 169.254.x.x network. Most operating systems also support this. So, you can connect your controlling laptop with a cross-over Ethernet cable to the WRAP Access Server, then power up the Access Server, and the devices will automatically have unique IP addresses in 169.254.x.x network.

Note: If you need to configure the network settings manually and cannot connect first using Zeroconf, you can do it using the management console, see subsection Section 2.3.1.

Locations of the physical interfaces of the Access Server are described in Figure 2-1 and Figure 2-2.

Figure 2-1. WRAP Access Server Connectors

Note: There is no power switch in the WRAP Access Server. Unplug and plug the power adapter to switch the power on and off. The power led in Figure 2-2 is on when the power adapter is connected.

Figure 2-2. WRAP Access Server LEDs

All the blue status LEDs are turned off when the boot procedure is finished and the Access Server is ready to be connected.


2.2. WWW Interface

Most WRAP Access Server functionality can be controlled via the WWW interface using any standard WWW browser.

The wrapfinder application (see Figure 2-3), available for Windows operating system from Bluegiga Techforum (https://www.bluegiga.com/techforum/) provides easy-to-use interface for finding the WRAP Access Servers (with SW version 2.1.0 or later) in the local area network.

Figure 2-3. WRAP Access Server Finder Application

The wrapfinder automatically identifies the broadcast address of the network it runs in and shows the IP addresses, serial numbers and WRAP Access Server device types it could find using UDP broadcast when it was launched.

Note: Normally, there are two entries for one Access Server. Use the one with the IP address in your local area network. Use the one with the 169.254.x.x, the Zeroconf network address, when it is the only one shown.

You can change the broadcast address used for finding the Access Servers. A new scan can be done by clicking Rescan.

Select an Access Server (by clicking its IP address) and click Details to see more information (like the Bluetooth addresses and friendly names) of the Access Server. See Figure 2-4 for details.

Figure 2-4. Details Dialog of WRAP Access Server Finder

Click Connect or double-click an IP address to connect to the selected Access Server using a WWW browser.

Click Exit to close the program.

Note: To find the IP address of the Access Server without wrapfinder, see Section 2.3.2.

The WWW interface is accessed at http://wrap-ip/, where wrap-ip is the IP address of the WRAP Access Server (see Figure 2-5).

Figure 2-5. WRAP Access Server WWW Interface

From the top-level page, click Setup to log in to the configuration interface. The default username is root and the default password is buffy (see Figure 2-6).

Figure 2-6. WWW Login Prompt for Access Server Setup

After logging in, you can configure several WRAP Access Server settings (see Figure 2-7). These are discussed in detail in Section 2.4.

Figure 2-7. The WWW Configuration Interface of the Access Server


2.3. Shell Prompt Access

Shell prompt access may be needed for advanced controlling operations that cannot be performed using the WWW interface.

You can get to the shell prompt using either SSH or the management console. The management console over a serial cable should only be needed to change the network configuration settings in the case were the network configuration using DHCP or Zeroconf is not possible. All further controlling activities can be performed remotely using SSH sessions over Ethernet or Bluetooth LAN/PAN connection.

If you can make SSH connection from a device that has Bluetooth LAN Access or PAN profile support, you don't need the management console. Just connect to the Access Server using LAN Access or PAN profile. The Access Server can be seen in Bluetooth inquiries as "Wserialno_n", where "serialno" is the serial number of the device and "n" is the number of the Bluetooth radio in question (model 2293 has three Bluetooth radios, any of which can be connected). After you have connected (no PIN code, username or password needed), connect using SSH to the device in the other end of the connection, typically 192.168.160.1. You can also use the wrapfinder application to find the IP address (see Section 2.2 for details).

Note: Bluetooth LAN Access is disabled by default. Use the WWW interface to enable it, if needed.

Note: The default username is root with password buffy.


2.3.1. Management Console

If you don't have Bluetooth LAN/PAN client and you don't have the Access Server connected to your LAN or you don't know the IP address given to the Access Server, you can get the first shell prompt access using the management console.

To setup management console do the following:

  1. Have a PC with a free COM port.

  2. Power off the Access Server.

  3. Configure your terminal application, like HyperTerminal in Windows, to use the settings in with the free COM port

    Table 2-1. The Management Console Port Settings

    SettingValue
    Speed115200bps
    Data Bits8
    ParityNone
    Stop Bits1
    Flow ControlNone
  4. Connect the serial cable shipped with the Access Server to your PC's free COM port.

  5. Connect the null-modem adapter shipped with the Access Server to the serial cable

  6. Connect the serial cable with the null-modem adapter to the management (user) port in the Access Server (see Figure 2-1).

  7. Power on the Access Server.

  8. Enter letter b in the terminal application during the first five seconds, while the blue LEDs in the Access Server turn on one by one.

  9. The management console is now activated and you should see the boot log in your terminal window. Wait for the device to boot up and end with the prompt [root@wrap /]$.

  10. You are ready to control the Access Server from the management console.


2.3.2. Accessing Remotely

When the WRAP Access Server is connected to a LAN it tries to get the IP address using DHCP and Zeroconf by default. You can then use the wrapfinder application to find the IP address (see Section 2.2).

If you cannot get the IP address using the wrapfinder, another way to see the IP address of the WRAP Access Server is to connect with a management console (see previous section), power on the board and, after the system is up and running, give the command ifconfig nap. The field inet addr for the interface nap contains the IP address of the WRAP Access Server board. For example, in the following capture from the management console, the IP address is 192.168.42.3.


        [root@wrap /]$ ifconfig nap
        nap      Link encap:Ethernet  HWaddr 00:07:80:00:BF:01
                 inet addr:192.168.42.3  Bcast:192.168.42.255  Mask:255.255.255.0
                 inet6 addr: fe80::207:80ff:fe00:bf01/64 Scope:Link
                 UP BROADCAST MULTICAST  MTU:1500  Metric:1
                 RX packets:12635 errors:0 dropped:0 overruns:0 frame:0
                 TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
                 collisions:0 txqueuelen:100
                 RX bytes:1686246 (1.6 MiB)  TX bytes:1640 (1.6 KiB)
                 Interrupt:24 Base address:0xc000
      

You can use this address to connect the Access Server remotely via SSH, SCP or SFTP.

Note: The default username is root with password buffy.


2.3.3. Transferring Files to/from the Access Server

You can transfer file to and from the Access Server by default using for example:

  • SCP (secure copy over SSH)

  • SFTP (secure ftp connection over SSH)

  • FTP (plain ftp connection).

    Note: FTP is disabled by default for security reasons. Use SFTP instead.

    Tip: If enabled, use the integrated client of the Internet Explorer (type ftp://root:buffy@wrap-ip-address/ in the address bar)

  • Bluetooth OBEX (Object Push and File Transfer Profiles) to/from directory /tmp/obex in WRAP Access Server

  • NFS (mount a nfs-share from a remote device as a part of the file system of the Access Server)

  • SSHFS (mount a WRAP Access Server directory over SSH as a part of the filesystem of any other Linux host)

    To download and install SSHFS, visit http://fuse.sourceforge.net/sshfs.html.

  • USB memory dongle (see Section 3.4 for more information).

  • Xmodem/Ymodem/Zmodem (use rz/rx/rb/sz/sx/sb commands from the management console)

For examples of file transferring, see Section 5.3.4.


2.4. Introduction to Configuration

When the WRAP Access Server is installed and powered up for the first time, the default configuration settings are being used. With these settings, the Access Server automatically configures its network settings assuming that the board is connected to a LAN network with a DHCP server running. Additionally, the Access Server also uses Zero Configuration Networking (also known as Automatic Private IP Addressing) to connect to the 169.254.x.x network, which can be used if the network has no DHCP server.

After booting, you can use the Access Server as a Bluetooth PAN access point to the network without any changes in configuration. Also, the Serial Port Profile is enabled by default in listening mode. You can also use Object Push and File Transfer Profiles to send files to/from the Access Server.

Most of the settings of the WRAP Access Server are configurable using the setup application. It has a WWW interface at http://wrap-ip/setup but it can also be run at the command line.

All configurable settings in the setup application are listed in Appendix B with their help.

Note: The default username is root with password buffy.


2.5. Using the Setup WWW Interface

The easiest way to change the Access Server settings is to use the WWW interface. Accessing the WWW interface is instructed in Section 2.2.

Typical WWW configuration page example is shown in Figure 2-8 (This page can be found at SetupSecurity settings)

Figure 2-8. Example WWW Setup Page

The different parts of a WWW Setup page are discussed in the following:

  • Changes have been saved. -line

    This line comes visible when the user saves the changes by clicking the Save button (or by clicking a toggling Yes/No link). It confirms that the changes have been saved into permanent storage.

    If invalid values were entered into one or more fields, an error message is shown at this line (see Figure 2-9).

    Figure 2-9. Trying to Save an Invalid Input

    Note: Rebooting of the Access Server is typically necessary to take changes into use. This can be done via the WWW interface (Advanced settings menu).

  • Number or text entry fields

    Most of the configurable settings are text (or number) entry fields. For some fields (like IP address or netmask), there are restrictions on the input format. Setup validates the input at save time and accepts only valid data. The fields with errors are shown to the user so that mistakes can be fixed (see Figure 2-9).

  • Help -link

    Clicking the Help link will retrieve the setup page again with requested help information displayed, like in like in Figure 2-10.

    Figure 2-10. Help Links in WWW Setup

    Note: If you have made changes to settings on the page before clicking Help and not saved them yet, they are lost.

  • Yes and No radio buttons

    These buttons are used to configure typically a setting that can be either enabled or disabled, but that is not connected to another setting that would be hidden or shown according to the value of this one.

  • Link to a configuration file

    Some of the configurable settings are actually editable configuration files, like /etc/httpd.conf for WWW passwords. Clicking the link will retrieve the file for editing in the browser window, or create a new file, if it does not exist. See Figure 2-11.

    Figure 2-11. Editing Files in WWW Setup

    Note: Any file can be edited via the WWW Setup, in page SetupAdvanced settingEdit other configuration files.

  • Reset -button

    Reset -button resets the fields to the values currently in use by the Access Server, i.e. it discards the changes that have not been saved yet.

    Note: This does not make a "factory reset".

  • Save -button

    Save -button sends the WWW page for the setup application for validation. If the values in the fields are valid, they are saved to permanent storage and the page is refreshed with Changes have been saved. message at top and the accepted values in the fields.

    If there were errors in the fields, these are shown as in Figure 2-9.

    Note: Rebooting of the Access Server is typically necessary to take changes into use. This can be done via the WWW interface (Advanced settings menu).

  • Back -link

    Returns to the previous level of the Setup menu hierarchy.

    Note: This does not save changes in the fields at the current page.

  • Exit -link

    Quits the setup application and returns to the WRAP Access Server's main WWW page.

    Note: This does not save changes in the fields at the current page.

  • Toggling Yes/No and on/off links

    Clicking Yes/No link (see Figure 2-12) immediately changes the setting and saves the change. Typically this is used with settings that require some other settings to come visible or to hide according to this setting.

    Figure 2-12. Yes / No links in WWW Setup

    The on/off links in SetupApplicationsDefault bootup applications behave in a same way, making and saving the change immediately (see Figure 2-13).

    Figure 2-13. Selecting Default Bootup Applications in WWW Setup

  • Upload links

    WWW Setup has settings that allow user to upload files to the Access Server, for example SetupAdvancedUpload a software update (see Figure 2-14).

    Figure 2-14. Uploading files via WWW Setup

    Use Browse... button to select a file to be uploaded, and send it to the Access Server by clicking Upload.

  • Browsing files

    Some WWW Setup pages allow users to browse the WRAP Access Server filesystem or part of it, like SetupAdvancedBrowse files (see Figure 2-15).

    Figure 2-15. Browsing files via WWW Setup

    Click the directory names to navigate in the filesystem.

    Click del to delete a file or an empty directory.

    Warning

    Deletion is not confirmed.

The WWW Setup has also menu items that run commands in the Access Server and then show the output in the browser window. Some commands, like rebooting the Access Server, are confirmed before execution.


2.6. Using the setup Command Line Application

The basic configuration settings can also be changed using the setup application at command line interface.

The setup application displays the settings in a hierarchical menu (see Figure 2-16). Navigating the menu is accomplished by entering the number or letter corresponding to the setting to be viewed and/or changed and pressing Enter. Pressing only Enter either accepts the previous value of the setting or returns to the previous level in the menu hierarchy.

Figure 2-16. Using the setup Command Line Application

Note: Ensure that your terminal application does not send line ends with line feeds. If your terminal sends both CR and LF when Enter is pressed, you cannot navigate in the setup application.


2.7. Resetting Configuration

You can restore the default configuration with setup application and rebooting the board. When the system starts up, the default configuration settings are restored. If you have only changed the configuration by using the setup application, the following commands at the Access Server's command prompt will suffice:


      [root@wrap /]$ setup -r
      [root@wrap /]$ reboot
    

Note: This does not reset the edited files to factory defaults, only the other settings changed with WWW Setup or setup command line application.


Chapter 3. Using the System

This chapter describes the basic features of a Bluegiga WRAP Access Server and their usage. This includes information on using the Access Server board as a Bluetooth LAN/PAN Access Point or a Bluetooth Serial Port Cable Replacer, using the Web Server, ObexSender, WRAP Package Management System and the various ways for uploading content for browsing and/or downloading, as well as getting familiar with the utility applications.

Using the features described in this chapter does not require the WRAP Access Server Software Development Environment to be installed.

Note: The default username is root with password buffy.

Note: Most of the configuration files are in Linux text file format, where the lines end with a single Line Feed (LF, "\n") character. Some applications will not work if the configuration file format is changed to MS-DOS format (happens for example if you transfer the files to the Windows for editing with Notepad), where the lines end with both Carriage Return and Line Feed (CR+LF, "\r\n") characters.


3.1. Network Interfaces

The network interface in the WRAP Access Servers are described in Table 3-1.

Table 3-1. WRAP Access Server Network Interfaces

InterfaceDescription
napDynamic virtual Ethernet ("cable") device. This is the device having an IP address. All the programs should use this device instead of eth0.
eth0Real Ethernet device, dynamically linked to nap device. Do not use this, use nap instead!
eth1WiFi device for the Hermes driver (client mode only).
wlan0WiFi device for the Hostap driver. In client mode this device has an IP address, in access point mode it is dynamically linked to nap device.
wifi0Virtual control device for wlan0. Do not use.
gnVirtual device for PAN-GN connections.
bnep#These devices are used for incoming and outgoing PAN connections. They are created, deleted and linked (to nap or gn) dynamically.
ppp#These devices are used for incoming and outgoing LAP connections. They are created and deleted dynamically. By default data coming from ppp# is masqueraded to nap device.

3.2. Bluetooth

The iWRAP servers (one in WRAP Access Server 2291, three in WRAP Access Server 2293) are started automatically at power-up. By default, the Serial Port, PAN and Object Push and File Transfer Profiles are activated. The iWRAP servers can be accessed and controlled (by applications or even interactively with a telnet client) using the iWRAP interface, described in section 9. Currently, there can be up to 14 simultaneous Bluetooth connections between a single master iWRAP server and up to 7 simultaneous slaves.


3.2.1. iWRAP Password Protection

The access to the iWRAP can be password protected. By default it's buffy, but it can be unset or changed with the setup application (see Section 2.4). The password is case sensitive. The password must be typed in as the first command after the server has replied with "READY."


3.2.2. LAN Access Profile

This profile is not automatically started at boot. The default settings can be changed with the setup application (see section Section 2.4), or runtime with the iWRAP interface (see Chapter 6).

The Access Server board can also act as a LAN Access Client, but in this case it must be controlled manually using iWRAP commands, described in Chapter 6.

Note: Since Bluetooth specification 1.2, LAN Access Profile has been deprecated.


3.2.3. Serial Port Profile

The Serial Port Profile is used to replace an RS-232 serial cable between two devices with a Bluetooth connection. The physical setup is shown in Figure 3-1.

Figure 3-1. Serial Cable Replacement Physical Setup

State A) in the figure is the starting situation with a serial cable connecting the devices. This cable is to be replaced with a Bluetooth connection.

In state B) the long serial connection is replaced with a Bluetooth Serial Port Profile connection between the two Access Server devices. These Access Server devices are then connected locally to the user devices with (short) serial cables. The cable between user device A and Access Server device A must be a cross-over cable. The cable between user device B and Access Server device B must be similar (direct or cross-over) to the one used in state A).

If RTS/CTS handshaking is used to ensure correct data transfer, the serial cables must have these pins connected. Note: This handshaking is "local": it takes place between the user device and the Access Server board. No handshaking between user device A and user device B on the other end of the Bluetooth connection is provided.

If RTS/CTS handshaking is not used, CTS must be connected to DTR.

DCD, DTR, and DSR signals are not supported. This also means that user devices A and B will not be able to tell whether or not the Bluetooth connection is up.

When the physical setup is ready, you can create the Bluetooth connection. By default, the Serial Port Profile is started up at boot with the default settings. That is, listening in DevB mode, at 115200 bps, 8 data bits, no parity, 1 stop bit, and RTS/CTS enabled. To change these settings, use the setup application or the WWW Setup interface, as described in Section 2.4.

Note: To disable Serial Port Profile, navigate to SetupApplications Default bootup applications in the WWW Setup interface, and switch serialport application to off.

Disabling can also be done from command prompt with command chkconfig --del serialport.


3.2.4. Object Push and File Transfer Profile

Access Server has two OBEX profiles: Object Push Profile (ObjP) and File Transfer Profile (FTP). You can use these profiles to transfer files easily between different Access Server devices and other devices supporting ObjP/FTP.

These profiles are handled by forwarding incoming calls to obexserver program, which handles both profiles. The working directory is /tmp/obex, and users have full read and write access there. By default, the default contact card /etc/default.vcf is copied there at boot.

In ObjP mode obexserver will prefix received files with sender's Bluetooth address and iWRAP port number.

Two simple command line utilities, obexput and obexget, are provided. They can be used to send and retrieve files to and from another Bluetooth device supporting ObjP/FTP.

Usage: obexput [parameters] bdaddr channel file(s)

Note: You can use the friendly name instead of Bluetooth address as the "bdaddr" parameter and keywords "OBJP" and "FTP" as the "channel" parameter for automatic service discovery.

Enter either of these commands without parameters to get a short help for using the command.

A non-zero return value means error. Reason for this error is printed to terminal. See Section 6.10 for a list of OBEX Library's return codes.


3.2.5. PAN Profiles

The WRAP Access Server has support for all PAN profile modes: Personal Area Network User (PANU), Network Access Point (NAP) and Generic Networking (GN).

The device creating the PAN connection decides, which of these modes are to be used. Incoming connections are handled automatically by the Access Server. The Access Server board can also act as a PAN client, but in this case it must be controlled manually using the iWRAP interface, described in the Chapter 6.


3.2.6. Bluetooth Range Changing

The transmit power of the WRAP Access Server is configurable. By default, class 1 (100 meter range) settings are used. The settings can be changed down to "class 2" settings (10 meter range) with b2b_class2 command or even less with b2b_class3 command. The class 1 settings can be restored with b2b_class1 command.

After b2b_class# is given, it is recommended to reboot the Access Server once to restart ObexSender and other applications connected to the iWRAP server(s).

Note: When the operation is successful, you should get one Can't open baseband message with WRAP Access Server model 2293 and three messages with 2291.


3.2.7. BTCLI - iWRAP Command Line Interface Utility

You can send commands to a iWRAP server using the btcli application.

Usage: btcli [options] command

To see the options, enter the command btcli --help.

The specified command is sent to a Access Server iWRAP server (default: first server at port 10101) and all replies are echoed to the standard output. The application waits and prints the replies for a certain amount of time (default: 10 seconds) and exits.

The iWRAP commands are described in Chapter 6.


3.2.8. serialbluetooth

It is also possible to control the first iWRAP server (at port 10101) via RS-232 with the serialbluetooth application. Note: When you want to use this application, you must first disable the Bluetooth Serial Port Profile and the WRAP SMS Gateway Server with the setup application, as described in Section 2.4.

Usage: serialbluetooth [options]

To see the options, enter the command serialbluetooth --help.

Basically, serialbluetooth takes commands from a serial port and forwards them to the iWRAP server. All the commands available via iWRAP are also available via serial port.

There are two exceptions:

  1. After making an outgoing RFCOMM data call, all input from the serial port is forwarded to the data socket, not the control socket. To close the data socket, you have to write +++ with a 200ms pause before each character. There is no way to have two concurrent RFCOMM calls.

  2. All incoming RFCOMM calls are answered automatically. Again, to close the data socket, write +++ as with the outgoing call.


3.2.9. Resetting Bluetooth Basebands

In case of rare failures in the Bluetooth baseband level, it is possible to give hardware reset for the basebands while the other system services are running with the following command sequence at the command line interface of WRAP Access Server:


        [root@wrap /]$ /etc/init.d/bluetooth stop
        [root@wrap /]$ echo ABCD > /dev/bbreset
        [root@wrap /]$ sleep 1
        [root@wrap /]$ echo abcd > /dev/bbreset
        [root@wrap /]$ sleep 2
        [root@wrap /]$ /etc/init.d/bluetooth start
      

3.3. Compact Flash Cards

WRAP Access Server functionality can be extended using GSM/GPRS, WiFi and GPS Compact Flash cards. The supported compact flash cards are listed in Appendix D.


3.3.1. Compact Flash GPRS Cards

The Compact Flash GPRS card is identified automatically by the operating system when inserted. The WRAP Access Server can use the GPRS card to connect to the GPRS network or to act as an SMS gateway (to send and receive SMS messages).

The GPRS mode is enabled and settings like SIM card's PIN code are configured using the setup application or its WWW interface, see Section 2.4 and documentation for SetupNetwork settingsEnable GPRS interface in Appendix B.

Using the WRAP SMS Gateway Server is documented in Section 3.5.3.

If needed for special use, the Compact Flash GPRS card can also be accessed directly from /dev/ttyS0, a device file which exists when the GPRS card is successfully initialized.


3.3.2. Compact Flash GPS Card

The Compact Flash GPS card is identified automatically by the operating system when inserted. At that time, the device file /dev/ttyS0 is created and the GPS card can be accessed using that device with the serial port settings in use by the GPS card.

The supported compact flash cards are listed in Appendix D.


3.3.3. Compact Flash WiFi Cards

WRAP Access Server has support for Prism II/III based CF WiFi cards. The supported compact flash cards are listed in Appendix D.

Depending on the firmware version, two different drivers must be used. The firmware version can be seen after the insertion of the card in the system log file /var/log/messages, which can be viewed with the WWW Setup interface at SetupAdvanced settingsShow system log file.

You need to use the Hostap driver, if you can see the following line in the log:


          eth1: Looks like an Intersil firmware version 1.7.4
      

If the firmware version is below 1.7.4, you must use the Hermes driver.

Selection of the driver and configuration is done with the setup application or its WWW interface at SetupNetwork settings.

Standard set of wireless utilities are provided to fine-tune your WiFi configuration:

  • iwconfig

  • iwlist

  • iwpriv

For more info see: http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html


3.4. USB Memory Dongles

Access Server's persistent memory storage can be extended using an USB memory dongle. The USB memory dongles are also used by the The WRAP Access Server Remote Management System (see Section 3.5.5) - each time a dongle is inserted, it is automatically mounted, scanned for management packets which are processed and unmounted.

To use the USB dongle for own applications it must be mounted manually with command


      [root@wrap /]$ mount -t vfat usbdevice /mnt/usb
    

The usbdevice parameter is a path to the USB dongle filesystem device. For the first dongle inserted after a reboot, it is /dev/scsi/host0/bus0/target0/lun0/part1, if the dongle is partitioned and and /dev/scsi/host0/bus0/target0/lun0/disc, if the dongle has no partition table. If you have used several dongles after reboot, the host0 part of the path must be changed to host1 or host2 and so on. Example of finding the correct device automatically can be seen in script /usr/sbin/hotplub.usb.

Note: Remember always to unmount the memory dongle with the command


          [root@wrap /]$ umount /mnt/usb
        

Note: Dongles with several partition tables do not fully work with the WRAP Access Server. In case of problems, please contact .


3.5. Servers

The Access Server server applications are started automatically at system power-up or when needed by the iWRAP server or the Internet services daemon. The servers and their purposes are described in Table 3-2.

Table 3-2. Access Server Servers

ServerDescription
bluetoothWRAP Access Server iWRAP Server, described in detail in Chapter 6.
finderWRAP Finder Service.
obexsenderWRAP ObexSender server.
smsgwWRAP SMS gateway server, described in detail in Section 3.5.3. Note: By default, this is disabled. Use setup application or chkconfig --add smsgw command to enable it.
watchdogWRAP user level watchdog.
wpkgdWRAP remote management system daemon.
cardmgrDaemon to monitor Compact Flash cards.
crondDaemon to execute scheduled commands. Configurable with /etc/crontab in the same way as any Linux crond. Note: By default, this is disabled. Use the WWW interface of the setup application or chkconfig --add crond command to enable it.
ftpdInternet File Transfer Protocol Server. Configurable with setup application. Note: By default, this is disabled. Use the WWW interface of the setup application or chkconfig --add ftpd command to enable it.
dhcpcdDHCP client daemon for automatic network configuration.
inetdInternet services daemon. Note: By default, this is disabled. Use setup application or chkconfig --add inetd command to enable it.
httpdWeb server, described in detail in Section 3.5.7.
pppdPoint to Point Protocol daemon. Used by the iWRAP server. Can be used manually over the user serial port (/dev/ttyAT1).
snmpdSNMP daemon.
sshdSSH daemon.
syslogdSystem logging daemon. Configurable with the setup application.
telnetdTelnet protocol server. Note: By default, this is disabled. Use setup application or chkconfig --add telnetd command to enable it.

3.5.1. Finder

The Finder service is a small service, which listens for UDP broadcast queries from the WRAP Access Server Finder applications and responses to those queries with identification information (IP address, model, serial number, etc.) about the Access Server.


3.5.2. ObexSender

The ObexSender application is started automatically in the WRAP Access Server. Its purpose is to receive business cards (vCards), images or other files, and analyze their content and send files back selecting them based on configured keywords found.

ObexSender can also inquiry for bluetooth devices, and automatically send one or more files to all new devices found.


3.5.2.1. ObexSender Configuration

ObexSender can be configured with setup application or by editing /etc/obexsender.conf file (see Section 2.4).


3.5.3. SMS Gateway Server

The WRAP SMS Gateway server supports Nokia 20, Nokia 30 or Wavecom WMOD2 compatible GSM terminals and the supported GSM/GPRS Compact Flash cards for sending and receiving SMS messages. By default the Compact Flash card is used. The PIN code query of the SIM-card at power-up must be disabled.

The WRAP SMS Gateway Server is disabled by default. To enable it, use the setup application's WWW interface, as described in section Section 2.4. Enabling is done at SetupApplicationsDefault bootup applicationssmsgw.

To use Nokia terminals the device must be connected to the user serial port when the server starts up and the terminal must be configured to operate in RS-232/AT-command. The Nokia terminals are configured with the N20 or N30 Configurator application.

The WRAP SMS Gateway is configured to use the terminal connected to the user serial port with the setup application or its WWW interface by changing the setting at SetupApplicationsSMS gateway settingsComport device to /dev/ttyAT1 from the default /dev/ttyS0.

Note: If you are using user serial port you have to disable the Bluetooth Serial Port Profile, as they share the same physical user serial port.

For further information on using smsgw, see the makesms example in Section 5.3.1.


3.5.4. User Level Watchdog

The WRAP User Level Watchdog daemon listens on UDP port 4266 for "id timeout" messages. "id" is an ASCII string, without spaces. If "timeout" equals to 0 (zero), the "id" is removed from the list of processes to wait. If "timeout" is greater than 0 (zero), the "id" is added or updated.

When there is no message for "id" received within the "timeout" seconds, the user level watchdog dies and the WRAP Access Server is rebooted by the kernel watchdog.

The watchdog command can be used to send messages to the watchdog daemon. This is done via command watchdog id timeout, for example watchdog test 5.


3.5.5. Remote Management

The WRAP Access Server contains simple tools that provide base for full and secure remote management of the device.

The basic remote management can be performed using the WWW Setup interface, SSH command line access and SCP and SFTP file transfer protocols.

In addition to them, the Access Server contains the WRAP Remote Management System for transferring management packets over different medium to the Access Server and automatically sending response packets back.

The management packets (*.wpk) are processed automatically when they are transferred to the autoinstall directory in the WRAP Access Server (/tmp/obex by default, configurable with setup application or WWW interface at SetupApplicationswpkgd settings). Easiest way to transfer a management packet to this directory is to upload it from WWW Setup at SetupAdvanced settingsUpload a software update.


3.5.5.1. Overview

The WRAP Remote Management System top level architecture is shown in Figure 3-2.

Figure 3-2. WRAP Remote Management Architecture

A management action is performed using the following protocol:

  1. A management packet (*.wpk) is prepared by the customer system.

  2. The management packet is delivered to Access Server, into packaging daemon's inbox directory. One can currently use Bluetooth, SCP, SFTP and plain FTP to do this. The packet can also be transmitted using a USB memory dongle or via the WWW Setup interface.

  3. The Access Server packaging daemon processes the management packet, possibly generating reply packet.

  4. (optional) Reply packet is delivered to the customer system.


3.5.5.2. Management Packet Format

  • Package name must be of format name.wpk, where "name" can be user defined.

  • Package must be tar -archive that is compressed with gzip (like files named *.tar.gz or *.tgz).

  • Package should contain package information file called wpkg.pif in package root (contents described later), otherwise built-in defaults for wpkg.pif are used.

  • All other files, if exist, should be data files, scripts or executables required for the management operation


3.5.5.3. Management Packet Information File Format

The management packet information file (wpkg.pif) consists of tags and their data, described here

%wpkg-version: 2

Contains information for version checking. 2 is currently the only supported version. This is also the default.

%wpkg-prepare: [command line[s]]

One or more commands (all lines until next tag are interpreted as command lines) to execute. Commands may contain parameters, redirections and job control as well.

Built-in default for this is /usr/bin/dpkg -i *.deb || echo ERROR: Installation failed.. This enables the special case of creating .wpk packets from .deb packets simply with tar czf foo.wpk foo.deb. (wpkg.pif is not needed in this special case).

%wpkg-reply: method

Where the generated reply packet is sent. By default it's sent to where it came from. Possible values are:

  • default

  • file:///path/filename

  • scp://remote:file

  • objp://bdaddr/

  • none

%wpkg-format: type

What kind of reply packet will be generated. Possible values are:

  • ascii (the default, everything echoed by prepare-section will be sent).

  • tgz (all files in current directory will be sent).

  • vcf (same as ascii, but assume it's vCard).

  • vmg (same as ascii, but assume it's vMessage).

  • vnt (same as ascii, but assume it's vNote).

  • vcs (same as ascii, but assume it's vCalendar).

  • html (same as ascii, but assume it's HTML).

%wpkg-auth: auth

Optional authentication string required by wpkgd.


3.5.5.4. Management Operation Example: Hello World

The simplest example of wpkg.pif is:


          %wpkg-version: 2
          %wpkg-prepare:
          echo Hello world
        

This will generate reply packet containing text "Hello world". You can generate the wpk-file simply giving the command tar czf hello.wpk wpkg.pif.


3.5.5.5. Management Operation Example: Software Update

More complex example of wpkg.pif is:


          %wpkg-version: 2
          %wpkg-prepare:
          FOO=`pwd`
          cd /
          tar xzf ${FOO}/files.tar.gz
          echo Done.
        

This example will extract files from included files.tar.gz. You can generate wpk-file with command tar czf update.wpk wpkg.pif files.tar.gz.


3.5.5.6. Management Operation Example: IPQUERY

In this example we build a simple packet that can be used with Bluetooth-enabled phone to retrieve IP Address of the WRAP Access Server. File wpkg.pif is:


          %wpkg-version: 2
          %wpkg-format:  vcf
          %wpkg-prepare:
          ipaddr() {
          echo `ifconfig nap | grep "inet addr" | awk -F [:] \
            \\{print\\$2\\} | awk \\{print\\$1\\}`
          }
          serialno() {
          echo `wrapid | grep Hardware | awk \\{print\\$5\\}`
          }
          echo -e "BEGIN:VCARD\r"
          echo -e "VERSION:2.1\r"
          echo -e "N:`serialno`\r"
          echo -e "TEL:`ipaddr`\r"
          echo -e "URL:`hostname`\r"
          echo -e "END:VCARD\r"
        

This example will send the reply back as vCard (contact card). Please note that you have to include all required vCard formatting by yourself. You can generate wpk-file simply giving the command tar czf ipquery.wpk wpkg.pif.

To use this example, send the file ipquery.wpk to the inbox of you Bluetooth phone. Check that you have Bluetooth enabled in the phone. Then from the phone's inbox, send the file ipquery.wpk via Bluetooth to the WRAP Access Server.


3.5.5.7. Management With USB Memory Dongle

When an USB memory dongle is inserted, the WRAP Access Server automatically tries to mount it (using VFAT type). When the mount is successful, the root directory is searched for a *.wpk packets and if a packet is found, it will be handled by the WRAP Package daemon. Optional reply packets are saved back to the root folder (if not otherwise stated in the %wpkg-reply tag).


3.5.6. FTP

If you enable FTP server then users can use it to log in in anonymously to /tmp/obex directory with download access or as root with password buffy to the root directory with full access. The password and other settings can be changed on the Access Server with setup application or by editing /etc/ftpd.conf file (see Section 2.4).

Note: Do not enable FTP because it's insecure. Use SSH (SCP or SFTP) instead. A nice client with a graphical user interface is for example WinSCP (http://winscp.net/).


3.5.7. Web Server

The integrated web server in the Access Server supports HTTP/1.0 methods GET and POST, and has light user authentication capabilities. The content can be either static or dynamic - the WWW server is CGI/1.1 compatible.

The web server is always running and the content (http://wrap-ip-address/) is located in the /var/www/html/ directory in the Access Server file system.

The web server is configured to protect the WWW Setup interface with username and password. The default username and password can be changed as instructed in Section 2.4. For further information about using the web server for your own applications, see the web examples in Section 5.3.1.


3.5.8. SNMP

A separate software update package is available from Bluegiga Techforum (https://www.bluegiga.com/techforum/), which adds the Net-SNMP suite of applications to the WRAP Access Server. Current implementation for the Access Server is limited and will be extended in the future. However, it can be used to poll the basic status of the Access Server.

Configuration details can be found and altered in the configuration file /etc/snmp/snmpd.conf accessible as described in Section 2.4.

For more information about the Net-SNMP suite, see http://net-snmp.sourceforge.net/


3.5.9. OpenVPN

A separate software update package is available from Bluegiga Techforum (https://www.bluegiga.com/techforum/), which adds the OpenVPN™, a full-featured SSL VPN solution to the WRAP Access Server.

For more information about the OpenVPN™, see http://openvpn.net/.


3.5.10. SSH

By default, users can use SSH to log in (or SCP and SFTP to transfer files) as user root with password buffy. The password can be changed on the Access Server using the command passwd or with the setup application.


3.5.11. Telnet

If you enable telnet then users can use it to log in as user root with password buffy. The password can be changed on the Access Server using the command passwd or with the setup application.

Note: Do not enable telnet because it's insecure. Use SSH instead.


3.6. Utilities

The Access Server is basically a small Linux system. Whether logged in from the management console or with SSH, your shell session starts as the root user in the root directory. After that, you have the option to use most of the standard Linux utilities, briefly listed and described in Table 3-3. Most of the commands have a small built-in usage help that can be seen by executing the command with the -h or --help parameter.

Table 3-3. WRAP Access Server Utilities

ApplicationDescription
adduserAdd user to the system.
arpingPing hosts by ARP requests/replies.
awkPattern scanning and processing language.
b2b_class1WRAP Board2Board module control script (set basebands to class 1).
b2b_class2WRAP Board2Board module control script (set basebands to class 2).
b2b_class3WRAP Board2Board module control script (set basebands to shortest possible range).
b2b_defaultWRAP Board2Board module control script (restore all factory defaults, class 1).
basenameStrip directory and suffix from filenames.
bashBourne-Again SHell.
btcliWRAP iWRAP Server Command Line Interface utility.
btproxyWRAP iWRAP Proxy for Access Servers (test revision).
bunzip2Decompress bzip2-compressed files.
bzcatDecompress bzip2-compressed files to stdout.
cardctlMonitor and control the state of PCMCIA sockets.
catConcatenate files and print on the standard output.
chatAutomated conversational script with a modem.
chgrpChange group ownership.
chkconfigUpdates and queries runlevel information for system services.
chmod Change file access permissions.
chownChange file owner and group.
chrootRun command or interactive shell with special root directory.
clearClear the terminal screen.
cmpCompare two files.
cpCopy files and directories.
cpioCopy files to and from archives.
crontabMaintain crontab files for individual users.
cutRemove sections from each line of files.
datePrint or set the system date and time. Note: The date command does not store the date into the battery powered real time clock. Use hwclock application instead.
ddConvert and copy a file.
deluserDelete user from the system.
dfReport file system disk space usage.
dfuWRAP Board2Board module firmware upgrade tool.
dialupWRAP iWRAP helper application.
dirnameStrip non-directory suffix from file name.
dmesgPrints of controls the kernel ring buffer.
dpkgA medium-level package manager for (.deb) packages.
dpkg-debDebian package archive (.deb) manipulation tool .
duEstimate file space usage.
dump_cisRetrieves and parses the Card Information Structures for inserted PCMCIA devices, or optionally, parses CIS information from a file.
dunWRAP iWRAP helper application.
egrepPrint lines matching a pattern.
encode_keychangeProduce the KeyChange string for SNMPv3.
envRun a command in a modified environment.
exprEvaluate expressions.
falseDo nothing, unsuccessfully.
fgrepPrint lines matching pattern.
findSearch for files in a directory hierarchy.
freeDisplay the amount of free and used memory in the system.
ftpInternet file transfer program.
gdbserverRemote server for GDB debugger.
gettyOpens a tty, prompts for a login name, then invokes /bin/login.
grepPrint lines matching a pattern.
gunzipExpand gzip compressed files.
gzipCompress files into gzip format.
headOutput the first part of files.
hexdumpA filter which displays the specified files, or the standard input, if no files are specified, in a user specified format.
hostidPrint out a unique 32-bit identifier for the machine (not yet implemented).
hostnameShow or set the system's host name.
hwclockQuery and set the hardware clock.
idPrint information for username or current user.
ide_infoIDE device information.
ifconfigConfigure a network interface.
ifportSelect the transceiver type for a network interface.
ifuserChecks to see if any of the listed hosts or network addresses are routed through the specified interface.
insmodLoads the specified kernel modules into the kernel.
ipTCP/IP interface configuration and routing utility.
iptables, ip6tablesIP packet filter administration.
killTerminate a program.
killall Kill processes by name.
lnMake links between files.
loggerMake entries into the system log.
loginSign on.
lsList directory contents.
lsmodList loaded modules.
md5sumCompute and check MD5 message digest.
mkdirMake directories.
mknodMake block or character special files.
mktempMake a temporary file name (unique).
modprobeHigh level handling of loadable modules.
moreFile perusal filter for crt viewing.
mountMount a file system.
mvMove (rename) files.
net-snmp-configNet-SNMP tool.
nslookupQueries the nameserver for IP address of given host.
ntpclientSimple NTP client application.
obexbrowserThe WRAP obexbrowser. A command line OBEX client interface.
obexgetThe WRAP OBEX tool for retrieving a file from a remote device with ObjP/FTP support.
obexputThe WRAP OBEX tool for sending a file to a remote device with ObjP/FTP support.
pack_cisConvert a text description of a PCMCIA Card Information Structure (CIS) to its packed binary representation.
passwdUpdate a user's authentication token(s).
picocomMinimal dumb-terminal emulation program.
pidofFind a process ID of a running program.
ping, ping6Send ICMP ECHO_REQUEST packets to network hosts.
psReport process status.
pwdPrint the name of the current/working directory.
rb, rx, rz, sb, sx, szXmodem, Ymodem, Zmodem file receive and send.
rdateGet and possibly set the system date and time from a remote HOST.
rebootReboot the system.
reniceAlter the priority of running processes.
resetResets the screen.
rmRemove files or directories.
rmdirRemove empty directories.
rmmodUnload loadable modules.
routeShow / manipulate the IP routing table.
scpSecure copy (remote file copy program).
scsi_infoSCSI device description tool.
sedA Stream EDitor.
setupThe WRAP Setup Application. See Section 2.4.
sftpSecure file transfer program.
sleepDelay for a specified amount of time.
snmp*Set of standard SNMP command line applications.
sortSort lines of text files.
ssh, sloginOpenSSH SSH client (remote login program).
ssh-keygenSSH authentication key generation, management and conversion.
straceUtility to trace system calls and signals.
stringsDisplay printable strings in binary file.
sttyChange and print terminal line settings.
suRun a shell with substitute user and group IDs.
suloginSingle-user login.
syncFlush filesystem buffers.
tailOutput the last part of files.
tarTar archiving utility.
tcpdumpUtility for dumping traffic on a network.
telnetUser interface to the TELNET protocol.
testCheck file types and compare values.
timeRun command and display it's resource usage information when finished.
topProvides view of processor activity in real time.
touchChange file timestamps.
trTranslate or delete characters.
tracerouteTrace the route ip packets follow going to host.
trueDo nothing, successfully.
ttyPrint the filename of the terminal connected to standard input.
uartmodeWRAP Uartmode: Change the mode of the user serial port (DTE or DCE).
umountUnmount file systems.
unamePrint system information.
uniqRemove duplicate lines from sorted lines.
unzipList, test, and extract compressed files in a ZIP archive.
uptimeTell how long the system has been running.
uudecodeDecode a file create by uuencode.
uuencodeEncode a binary file.
wcPrint the number of bytes, words, and lines in files.
viA text editor.
wgetA utility to retrieve files from the World Wide Web.
wrapfinderFinds other Access Servers in the network.
wrapidThe WRAP Access Server identification program. Shows build and hardware configuration information.
whichShows the full path of (shell) commands.
whoamiPrints the user name associated with the current effective user id.
zcatExpand gzip compressed files to the standard output.
zeroconfZero Configuration Networking application.
xargsBuild and execute command lines from the standard input.

3.7. Real Time Clock

The system clock is read from the battery operated real time clock during boot. The time between the system time and the real time clock can synchronized using the hwclock application. Give command hwclock --help for more information.


3.8. Time Zone

The default time zone in the WRAP Access Server is UTC. You can change the timezone by replacing the file /etc/localtime with the correct file from your desktop Linux system (using your /etc/localtime or a wanted zone from /usr/share/zoneinfo).


3.9. System Re-Install and Upgrade

Access Server can be re-installed with the latest software version. The latest software updates and instructions are available at https://www.bluegiga.com/techforum/.

Most of the software updates are delivered as wpk file.

The easiest way to install these is:

  1. Start Access Server.

  2. Copy wpk file or files to an empty USB memory dongle.

  3. Insert the dongle into Access Server

  4. LEDs will turn on, and after 10-60 seconds they will turn off.

  5. Remove the dongle and reboot Access Server.

  6. All done.

See Section 3.5.5 for detailed description for other options and how to create your own wpk files.


Chapter 4. Bluetooth Technology Overview

Figure 4-1. Bluetooth Software and Hardware Components


4.1. Frequency Bands and Channel Arrangement

The Bluetooth system operates in the license-free 2.4 GHz ISM (Industrial Science Medial) band using frequency hopping spread spectrum (FHSS). In the vast majority of countries around the world this frequency band is 2400 - 2483.5 MHz. Some countries have, however, national limitations on the frequency range. In order to comply with these national limitations, special frequency hopping algorithms have been specified for these countries. It should be noted that products implementing the reduced frequency band will not work with products implementing the full band. Products implementing the reduced frequency band must therefore be considered local versions.

The Bluetooth frequency band is divided into distinct channels with 1 MHz channel spacing. In order to comply with out-of-band regulations in each country, a guard band is used at the lower and upper band edge. The frequency range is 2.400 - 2483.5 MHz, and the corresponding channels are f = 2402 + k MHz; k = 0 - 78. Transmission utilizes channel hopping over the specified range at 1600 kHz hop frequency. When operating in countries that permit the use of only a subset of the overall spectrum, transmission utilizes only the approved portions of the spectrum. The Bluetooth system utilizes Gaussian frequency shift keying (GFSK). The signaling rate is 1 Mbit/s.


4.2. Power Considerations

The Bluetooth system transceivers are classified into three power classes to support different link ranges.

  • Power Class 1. Output power is 1 - 100 mW (0 - 20 dBm) with mandatory power control ranging from 4 to 20 dBm.

  • Power Class 2. Output power is 0.25 - 2.5 mW (-6 - +4 dBm) with optional power control.

  • Power Class 3. Output power is less than 1 mW (0 dBm) with optional power control.

Bluegiga's WRAP products support a 100 meter link range with Option 1 (Power Class 1).


4.3. Radio Frequency Propagation

The radio frequency signal propagates in free space as a spherical wave, from a point source to all directions equally. In reality, the actual signal source always differs from a theoretic isotropic signal source. The power distribution of wireless telecommunication equipment in space is determined by the antenna radiation pattern. In free space the signal propagates with the speed of light and attenuates with 1/r2 relation. In reality, the environment always differs from free space. The propagation environment of wireless telecommunication equipment is restricted by all obstacles.

The basic mechanism of radio propagation is attributed to reflection, diffraction, and scattering depending on existing obstacles. Since the radio frequency signal propagates omnidirectionally, the transmitted signal arrives at the receiver following multiple paths deformed by the aforementioned propagation mechanisms. The received signal is the superposition of attenuated and delayed replicas of the transmitted signal, leading to fading of the transmitted signal and broadening of the duration of the transmitted pulse. The transmitted pulse delay spread leads to inter-symbol interference (ISI) because the subsequent symbols interfere with each other. The ISI leads to a bit error probability (BIT) floor that is independent of the signal to noise ratio (SNR). Depending on the time delay spread of the transmitted pulse or the amount of widening that the transmitted pulse experiences across the radio channel, the multipath interference differs. When the time delay spread of the transmitted signal is very small with respect to the signaling time, the multipath interference essentially leads to the signal fading phenomena of the received signal. When the time delay spread of the transmitted signal is high with respect to the signaling time, the multipath interference leads to the symbol interference phenomena of the received signal as well.

A major difference between indoor and outdoor environments is that the former is considerably more sensitive to changes in the geometry of the environment than the latter. This is because of the differences in distance between obstacles. For example, a door being shut rather than open may have a major impact on an indoor environment whereas a comparable event in an outdoor environment may have a minor impact.

The Bluetooth standard has been designed to operate in noisy radio frequency environments. Transmission utilizes fast frequency hopping and short packages to make the link efficient and robust. Fast hopping and short packages limit the impact of interfering devices on the same frequency band.


Chapter 5. Software Development Kit

5.1. Introduction to SDK

This manual describes how to create and use applications using the WRAP Access Server Software Development Environment. The relationships between the applications in the WRAP Access Server Software Platform are shown in Figure 5-1.

Figure 5-1. Relationship Between the Customer Applications and WRAP Access Server Software


5.2. Installing SDK

Note: The Software Development Environment can be installed only on a PC running the Linux operating system!


5.2.1. WRAP Access Server Software Development Environment System Requirements

The following hardware and software is required to run the WRAP Access Server Development Environment:

PC with

  • CD-ROM drive

  • Linux (tested with RedHat Enterprise Linux 3 and above, Fedora Core 2 and above)

    Devel libraries (especially zlib-devel and ncurses-devel) must be installed

    modutils-2.4.26 or newer must be installed

  • 300MB of available hard disk space

An Ethernet connection to a Local Area Network (also connected to the Access Server board) is highly recommended.

Mount the WRAP Access Server SDK CD-ROM or ISO image, change the current working directory to where it is mounted, and run the install script. If the user running install does not have privileges to create the directory for the toolchain, normally /usr/local/arm, the install scripts prompts for root password.

Example (things you need to type are printed like this):


        $ mount /dev/cdrom /mnt/cdrom
        $ (or mount -o loop /path/to/sdk2.iso /mnt/cdrom)
        $ cd /mnt/cdrom
        $ sh install
      

Install will ask you some questions (described below) regarding which components to install and the paths to install them to. If you are not very familiar with Linux, just press enter to these questions (the default values are suitable for most users and systems).


5.2.2. Questions Asked by the Install Script

Access Server toolchain directory � (default: /usr/local/arm)

This is the path where you want the WRAP Access Server Software Development tools (arm-linux-gcc, etc.) to be installed.

Note: If you change this value, the WRAP Access Server tools and libc must be recompiled. The recompilation process is very complicated and lengthy, and it may fail, depending on your system. Recompilation is done automatically by the install script, if necessary.

Development directory � (default: [home_of_current_user]/asdk)

This is the path where you want the WRAP Access Server Software Development Environment to be installed.

Development directory owner � (default: [current_user])

(Asked only if run as root) This is the username of the owner of the development directory.

Note: If this is not the username of the developer for whom the Software Development Environment is being installed, the user will not have rights to use the development files and therefore can not develop any WRAP Access Server software.

Install toolchain sources � (default: no - unless the tools directory was changed)

Whether or not the toolchain sources will be installed. These are required only if the WRAP Access Server tools directory was changed from the default target location in step 1.

Install linux headers (default: no - unless libc sources are selected)

Whether or not the Linux header files will be installed. These are required only if the libc sources are being installed (chosen in step 5).

Install example applications � (default: yes)

Whether or not the WRAP Access Server example applications and their sources will be installed.

Compile image after installation � (default: yes)

If set to yes, install will compile the WRAP Access Server filesystem image to test that the installation was successful and that the Development Environment is working correctly.


5.3. Creating Application

The fastest way to start developing Access Server applications is to study, change, and recompile the example files in the asdk/examples directory.


5.3.1. Application Examples

To demonstrate the software development features of the Access Server, the WRAP Access Server Software Development Environment comes with several example applications.


5.3.1.1. Installing Examples

The compiled example files are located in WPK packets on the WRAP Access Server SDK tree in the directory asdk/bin/.

The examples can be manually uploaded and installed on the Access Server board by sending them to to the /tmp/obex directory. The wpkgd server automatically installs them. Uploading can be done with Bluetooth, SCP, SFTP or X/Y/Zmodem.


5.3.1.2. Running Examples

The examples, with their usage and purpose, are described in Table 5-1.

Table 5-1. Examples, Their Usage and Purpose

ExampleUsagePurpose
helloworld/usr/bin/helloworldThe "Hello, world!" application.
serial/usr/bin/serial /dev/ttyAT1"Hello, world!" to the serial port. Note: "/dev/ttyAT1" must be free (no WRAP SMS Gatewary or WRAP Bluetooth Serial Port Profile using it).
forkserverSET BLUETOOTH LISTEN 11 /usr/bin/forkserverSimplest Bluetooth RFCOMM server example, use for example btserver as a client.
btserver/usr/bin/btserver - for server mode (if no forkserver running), /usr/bin/btserver <bdaddr of btserver in server mode or forkserver> 11 for client modeAdvanced iWRAP client example (can run both as RFCOMM server or client).
io/ioled/usr/bin/ioledI/O: LED/Buzzer example.
ledtest/usr/bin/ledtestI/O: Another LED example.
m2necho testmessage | /usr/bin/m2nMachine 2 Network example. System Logger configuration needed for actual remote connection. Without it, simulates it locally.
man2m/usr/bin/ledserver and browse with Java-enabled browser to http://wrap-ip-adress/man2m/Man 2 Machine example. Also demonstrates Java applets.
wwwBrowse to http://wrap-ip-address/example.htmlDemonstration of the web server capabilities.
makesmsBrowse to http://wrap-ip-address/send.html. Note: Assumes WRAP SMS Gateway is up and running (see Section 3.5.3).Demonstrates WRAP SMS Gateway by sending SMS messages with WRAP SMS Gateway.
obexbrowserDocumented in Section 6.10.3.Demonstrates the usage of the WRAP OBEX libraries implementing Object Push Profile and File Transfer Profile clients.

5.3.2. Creating a New Project

To start a new project, you need to create a new subdirectory in your Development Environment's directory (asdk/) and add your application source files and Makefile to that directory.

A project skeleton can be done automatically using WRAP Access Server Project AppWizard. Just give the command make appwiz APP=dir/to/newapp in the Development Environments top level directory (asdk/). A "hello world" example ANSI C project is then created.

To create C++ project, give the command make appwiz APP=dir/to/newcppapp CPP=y.

You can add your directory to the compile queue by inserting it in the file asdk/DIRECTORIES if you want to compile the whole source tree at once from the top level asdk-directory.

You may need to modify the variables in the Makefile for your project. You can see the defaults and their description in the default Makefile created by the AppWizard (asdk/dir/to/newapp/Makefile in our example above).

Makefile variables are:

  • TOPLEVEL

    This should point to the Development Environment source directory, i.e. asdk/.

  • APPNAME

    This is the name of the executable file of the application. In our example, this line should be APPNAME = testapp

  • APP_DIR

    This is the location of the application executable, when installed with the .wpk packet. By default, this is /usr/local/bin

  • SRC

    This variable defines the files to be compiled and linked into APPNAME. In our example, this line could be SRC = testapp.c. Several files are separated with space, like SRC = testapp.c extraobj.c

  • APP_STRIP

    Optional variable. The application symbols are removed by default to reduce application size. For debugging, these are needed, which can be done by APP_STRIP = false.

  • CFLAGS

    Optional extra flags for C compiler. Set CFLAGS = -ggdb if you want to debug application.

  • CXXFLAGS

    Optional extra flags for C++ compiler. Set CXXFLAGS = -ggdb if you want to debug application.

  • LIBS

    Optional additional libraries needed by application. Multihreaded application needs libpthread with LIBS = pthread.

Now you have a new project just waiting for coding. To compile the project, you simply need to run make in the testapp directory.

The build system also creates the installation packet (testapp-timestamp.wpk), which can be transferred to /tmp/obex directory of the Access Server from where it is installed automatically.


5.3.3. Building From the Command Line

The WRAP Access Server Development Environment uses the ARM port of the GNU bintools and compilers to build applications. If you are not very familiar with Linux development, you should use the method explained in the previous section instead of writing your own makefiles.

If you still want to use your very own development environment, there are two minor issues to remember:

  1. Tools are prefixed with arm-linux-, so for calling gcc C-compiler you need to call arm-linux-gcc, etc.

  2. Tools are located in /usr/local/arm/2.95.3/bin/ directory, which is not in PATH by default.


5.3.4. Transferring an Application to the WRAP Access Server

To run an application on the Access Server, it must first be transferred into it. There are several ways of doing this (see Section 2.3.3). The most usable ways while doing software development are discussed in the following subsections.


5.3.4.1. Transferring an Application Using SCP or SFTP

An SCP transfer is done with a single command. In the following example myapp is transferred to the directory /tmp in the Access Server:


          $ scp myapp root@<wrap-ip-address>:/tmp
          root@<wrap-ip-address>'s password: buffy (not echoed back)
          /path/to/myapp/myapp  100%    20KB    20.0KB/s    00:00
          $
        

An SFTP transfer is almost similar, but the command procedure is a bit closer to an FTP session (FTP can also be used if the FTP server is enabled):


          $ sftp root@<wrap-ip-address>
          Connecting to <wrap-ip-address>...
          root@<wrap-ip-address>'s password: buffy (not echoed back)
          sftp> cd /tmp
          sftp> put myapp
          Uploading myapp to /dev/shm/tmp/myapp
          /path/to/myapp/myapp  100%    20KB    20.0KB/s    00:00
          sftp> quit
          $
        

5.3.4.2. Using SSHFS

With SSHFS, the filesystem of the WRAP Access Server can be securely mounted to be a part of the development host's filesystem.

To download and install SSHFS, visit http://fuse.sourceforge.net/sshfs.html. After that you can mount the whole filesystem and copy the myapp application to /tmp directory in the Access Server with the following commands:


          $ mkdir mnt
          $ sshfs root@<wrap-ip-address>: mnt
          root@<wrap-ip-address>'s password: buffy (not echoed back)
          $ cp myapp mnt/tmp
          $ fusermount -u mnt
          $
        

5.3.4.3. Transferring an Application Using Terminal Software

If your Access Server is not connected to a LAN, you may use terminal software of your own choice to transfer data to the Access Server.

The Access Server contains an X/Y/Zmodem protocol application, which allows you to transfer data over the console using almost any terminal software available:

  1. Connect your computer to the Access Server management UART using a cross-over serial cable, and start your terminal software (115 200bps, 8 data bits, no parity, 1 stop bit).

  2. Change your working directory to where you want to upload your application, and run the xmodem application with your application name as parameter.

  3. Start Xmodem send from your terminal software.

Example 5-1. Transfering Files with Xmodem


            [root@wrap /] cd /tmp
            [root@wrap /tmp] rx testapp
            rx: ready to receive testapp.
            now start xmodem (checksum, not CRC) send from your terminal
            [root@wrap /tmp]
          

If you want to save the application to /usr/local/bin (on the flash file system), you will have to replace cd /tmp with cd /usr/local/bin. To examine the directory structure of the Access Server, please see Appendix A.


5.3.4.4. Using NFS mount

To use NFS mount, have a NFS share prepared in your development PC and mount the directory with command mount -o nolock <dev-pc-ipaddress>:/nfsshare /mnt/nfs. After this, you can access the share in directory /mnt/nfs.


5.3.5. Running an Application Transferred to Access Server

To run the application you just transferred to the Access Server, you need access to the Access Server console, either using terminal software connected to the Access Server management UART or using the SSH connection (log in as user root and remember the password, which is buffy by default).

After establishing a connection to the Access Server, change the directory to where your application is located and change file permissions so that it can be executed, then run it.

Example 5-2. Running Application


          [root@wrap /] cd /tmp
          [root@wrap /tmp] chmod 755 testapp
          [root@wrap /tmp] ./testapp
        

5.3.6. Using Debugger (GDB/DDD)

It is possible to use GNU debugger GDB and a graphical user interface, like DDD, for debugging applications in the WRAP Access Server.

You have to compile with debug options and without symbol stripping to make debugging work. As mentioned above, this can be done by adding lines "APP_STRIP=false" and "CFLAGS=-ggdb" to the Makefile below SRC line.

After you have compiled your application with these options and transferred your application to Access Server, you can start debugging the application as follows:

  1. Start gdbserver on the WRAP Access Server

    Usage: gdbserver :<port> <your application>

    Example: gdbserver :6789 ./hello

  2. Start debugger on the host PC. (example is for DDD)

    Example: ddd --debugger /usr/local/arm/2.95.3/bin/arm-linux-gdb hello

  3. Create connection to the WRAP Access Server.

    Usage: target remote <node IP>:<port>

    Example: target remote 192.168.42.3:6789

  4. Run the program with command continue.


Chapter 6. iWRAP - Bluetooth Interface

The Bluetooth in the Access Server is controlled via the TCP socket interface called iWRAP. The first iWRAP server is listening on port 10101. In case of Access Server 2293, the second iWRAP server is listening on port 10102 and the third one is listening on port 10103. All commands to a iWRAP server and replies from the server are plain ASCII strings ending in CR+LF ("\r\n"). Commands and replies are not case sensitive.

When connecting to a server you must first wait for the READY. prompt. Do not send any commands prior to this. Some replies are broadcast to all clients of the server. If you see something that you have not requested or that is not intended for your client (identified by the link identifier), simply ignore the reply.

Normally, the iWRAP is protected with a password buffy. The password can be disabled or changed, see the SET command. If the password is enabled, it must be sent first, immediately following the READY. prompt, to the iWRAP server. Otherwise, all commands will fail.

For an example of using the iWRAP, please see asdk/examples/btsend in the SDK directory.

In the following examples, bold lines are commands sent by the client to the iWRAP server and normal lines are replies received from the iWRAP server by the client.


6.1. Terms

Bluetooth address (bdaddr) is six hex digits separated by a colon. For example, "00:07:80:80:bf:01". With commands requiring Bluetooth address, you can also use Bluetooth friendly name instead.

Bluetooth channels are numbered from 1 to 30. In Access Server, the Serial Port Profile is assigned to channel number two, the Object Push Profile and File Transfer Profile to channel number three and the LAN Access Profile is on channel number four. The other channels are free for user applications.

Link Identifier (link_id) is a number from 0 to 99 used to identify established Bluetooth connections.


6.2. Starting the iWRAP Servers

Normally, the iWRAP servers are started automatically upon power-up. You can restart the servers manually (for example, to apply the changes made to the iWRAP settings with setup application without rebooting the system). To restart the servers manually, execute the startup script with option restart:

[root@wrap /] /etc/init.d/bluetooth restart

When the iWRAP servers start up, it uses the settings configured with the setup application. You can put your extra iWRAP commands in the /etc/bluetooth.conf file. The commands in that file are processed as the last task every time iWRAP server is started.


6.3. Writing iWRAP Applications

There are two approaches when writing a iWRAP server program (a program accepting incoming calls) for the Access Server, both having different pros and cons:

  1. Forklistener

  2. iWRAP Client

When writing a client program (a program making an outgoing call), you have to use iWRAP.


6.3.1. Forklistener

This is a standard program reading data from standard input and writing output to standard output. See SDK's directory examples/forkserver/ for an example of this kind of program.

Pros:

  • Easy to write.

  • Very robust for simple services.

  • You don't have to know anything about Bluetooth or iWRAP.

Cons:

  • Your program is started and stopped for every incoming connection.

  • If there are multiple connections it is not possible to communicate to external program via one socket.

  • You can't use stdout for debugging, you have to use syslog or a log file.

  • iWRAP's advanced features are not available: powermodes, MSC, SDP, inquiry, ...

To setup a forklistener see SET command.


6.3.2. iWRAP Client

iWRAP client is a program communicating with the iWRAP server via control and data sockets. See SDK's directory examples/btserver/ for an example of this kind of program.

Pros:

  • The cons with forklistener do not apply.

Cons:

  • More complex than forklistener.

  • You must have basic knowledge about Bluetooth and iWRAP.

For documentation about iWRAP read this chapter carefully.


6.4. Commands Controlling iWRAP

Table of Contents
INFO -- Get basic info
QUIT -- Close iWRAP connection
SET -- Change parameters
SAVE -- Save iWRAP settings
LOAD -- Run iWRAP command script
PING -- Ask if connection is alive
PONG -- Connection is alive
ECHO -- Send a message to other iWRAP clients
LOCK -- Lock other iWRAP clients
UNLOCK -- Unlock other iWRAP clients
SHUTDOWN -- Close iWRAP server
SLEEP -- Wait a second

INFO

Name

INFO -- Get basic info

Synopsis

INFO

Description

INFO is used to retrieve version info of the iWRAP server, in the same format as the READY. prompt when the iWRAP connection is opened.

Reply

READY. (wrap-2-1-0 $Revision: 1.21 $ bt1.2)
        

QUIT

Name

QUIT -- Close iWRAP connection

Synopsis

QUIT

Description

To close the connection to the iWRAP server, use the QUIT command.

Reply

There is no reply.

Example


          READY.
          QUIT
        

SET

Name

SET -- Change parameters

Synopsis

SET [variable [value] ]

Description

The SET command allows you to alter various Bluetooth and iWRAP parameters. The supported variables are listed in Table 6-1. Issuing a SET command without parameters will list current settings.

Table 6-1. Supported Parameters for iWRAP SET Command

VariableDescription
BLUETOOTH BDADDR bdaddrOur bdaddr. This is a read-only value.
BLUETOOTH NAME friendly_name

Set your friendly name. Others can request this name with the NAME command. There are following meta characters you can use:

$S: Hardware serial number, all ten digits

$s: Hardware serial number, last three digits

$P: Server port

$p: Server port, last digit

$H: FQDN

$h: hostname

$$: $

The default value is $S_$p.

BLUETOOTH READABLE mode

If enabled, some SDP result codes will have literal values instead of numeric values.

0: No (always use numeric values)

1: Yes (literal values)

BLUETOOTH CLASS valueSet class-of-device value.
BLUETOOTH LAP valueSet IAC LAP value. Default: 9e8b33
BLUETOOTH ROLE role {policy {timeout}}

Set master/slave role switch preference, optionally also link policy and link supervision timeout. Possible values for "role" are:

0: allow calling, don't request when answering

1: allow calling, request when answering

2: don't allow calling, request when answering

The default link policy is 000f and the default link supervision timeout is 7d00. See Bluetooth Specification for more information on these.

BLUETOOTH ENCRYPT value

Whether or not to use Bluetooth encryption. To actually have Bluetooth encryption enabled, the connection has to be authenticated.

0: No

1: Yes

BLUETOOTH LAP valueSet IAC LAP value. Default: 9e8b33
BLUETOOTH PAGEMODE mode {page_timeout {page_repetition_mode {scan_activity_interval scan_activity_window {inquiry_activity_interval inquiry_activity_window}}}}

Pagemode controls whether or not other devices can find and call you. There are four different modes:

0: No inquiry, no paging

1: Inquiry, no paging

2: No inquiry, paging

3: Inquiry and paging

Page timeout is in hex and the default value is 2000. Default page repetition mode is 2 (R2). Default scan activity is interval 0800 and window 0012 (R1). Default inquiry activity is interval 0800 and window 0012 (R1).

See Bluetooth Specification for more information on these.

BLUETOOTH AUTOHIDE physical logical

Automatically hide baseband (set pagemode to 0) if there are more than physical ACL links or logical connections. Value 0 means "don't care".

Default values: 7 0

BLUETOOTH AUTH * {authflags}Remove default PIN code. If you are making an outgoing connection and the remote asks for PIN, "1234" will be sent.
BLUETOOTH AUTH * pin {authflags}Set default PIN code.
BLUETOOTH AUTH bdaddr {authflags}Remove PIN code for bdaddr.
BLUETOOTH AUTH bdaddr pin {authflags}

Set PIN code for bdaddr.

Authflags are:

--NEWPAIR Only if we do not have linkkey yet

--REQUEST Request this pin from remote, do not reply with this one

--REPLY Reply with this pin to remote requests

--CALL Only if making outgoing call

--ANSWER Only when answering to incoming call

--RFCOMM Call type is RFCOMM (includes FORK/PPP/...)

--BNEP Call type is BNEP

--L2CAP Call type is L2CAP

Default authflags are all but --NEWPAIR enabled.

There are three special pins:

- Reject without asking pin.

-- Reject on the connection open, do not check for call types.

+ Accept without asking pin.

BLUETOOTH PAIR bdaddr linkkey

Manually set linkkey for bdaddr.

Note: SET BLUETOOTH AUTH must also be set for some value to enable encrypted connections with previously stored link keys.

BLUETOOTH PAIR bdaddrManually delete linkkey for bdaddr.
BLUETOOTH PAIREXPIRE secondsSet expiration time, in seconds, for pairing information.
BLUETOOTH LISTEN channel cmd {mem {delay}}

Add fork-listener for the channel. When there is an incoming RFCOMM connection to the channel iWRAP server will handle the connection by itself by forking "cmd". At least "mem" kilobytes of free memory must be available, or the connection will be rejected. After forking iWRAP server will wait "delay" timerticks (50ms) before transmitting any data.

The client application should modify both the stdout and stdin pipes and set NOECHO, 8BIT and all other necessary modes in the very beginning. The purpose of the "delay" parameter is to give the application enough time to do this.

BLUETOOTH LISTEN channel host:portAdd forward-listener for the channel. When there is an incoming RFCOMM connection to the channel iWRAP server will forward it to host:port using raw TCP/IP socket.
BLUETOOTH LISTEN psm L2CAPAdd L2CAP-listener for the psm.
BLUETOOTH LISTEN channelRemove fork/forward/L2CAP-listener for the channel/psm.
BLUETOOTH LINK mode params

Modify slaves powermode according to "mode". "params" are optional and mode-dependent. Possible values for "mode" are 0, 1, 2, 3, 4:

0: Active.

Params: None.

1: Park: Round-robin.

Params: max_beacon min_beacon sleep_after_unpark sleep_after_round

Defaults: 254 160 5 30

Sleeps are specified by timerticks (50ms).

2: Park: Idle.

Params: max_beacon min_beacon max_active

Defaults: 512 384 6

max_active is the maximum number of active slaves.

3: Sniff: All.

Params: max_interval min_interval attempt timeout

Defaults: 640 426 1 8

4: Sniff: Idle.

Params: idle_timeout max_interval min_interval attempt timeout

Defaults: 400 640 426 1 32

idle_timeout is in timerticks (50ms).

See Bluetooth Specification for more information on params.

BLUETOOTH QOS service_type token_rate peak_bandwidth latency delay_variation

Set default QoS values for new connection. Parameters are in hex. See Bluetooth Specification for more information on params.

Defaults: 01 00000000 00000000 000061a8 ffffffff

L2CAP TIMEOUT flushto linkto

Define FlushTimeout and LinkTimeout for L2CAP connections. See Bluetooth Specification for more information on params.

Defaults: 65535 40000

PPP AUTHDon't require any PPP authentication on incoming connections.
PPP AUTH username passwordRequire specified username:password on incoming PPP connections.
PPP CHANNEL channelOur PPP (LAN Access Profile) channel. This channel will be handled internally by the iWRAP server. If you change this, remember to modify the SDP record as well. Use zero value to disable the LAN Access Profile.
PPP DEFAULTROUTE value

This setting controls whether or not the iWRAP server should modify the defaultroute setting. There are four different modes:

0: Don't alter defaultroute

1: Set defaultroute according to outgoing PPP

2: Set defaultroute according to incoming PPP

3: Set defaultroute according to all PPP calls

PPP WINHANDSHAKE secondsTimeout to wait for the Windows RAS handshake.
PPP IP ipaddr/maskSet network IP range for PPP clients.
PAN ENABLE bitmap

Controls incoming PAN connections. Bitmap:

1: Allow incoming PAN-PANU connection.

2: Allow incoming PAN-GN connection.

4: Allow incoming PAN-NAP connection.

8: Enable zeroconf for incoming PAN-PANU connections.

16: Enable zeroconf for outgoing PAN-PANU connections.

For most cases value "6" (the default) is recommended.

CONTROL AUTOEXEC cmdRun CALL command, and rerun it when call is disconnected. Example: SET CONTROL AUTOEXEC CALL bdaddr PAN-NAP PAN-NAP
CONTROL PASSWORD Don't require password from iWRAP clients
CONTROL PASSWORD pass {--LOCAL}

Enable password. iWRAP clients must send this password before giving any other command. The password is case sensitive.

With optional --LOCAL parameter clients coming from localhost are accepted without password.

CONTROL PING secondsIf enabled (seconds > 0), the iWRAP server will send a PING reply to all iWRAP clients. You have to reply to it with PONG or the connection will be closed.
CONTROL AUTOSAVE what filenameAutomatically save settings to file when they change. See SAVE command for possible what-values.
link_id MSC valueSet MSC for link_id to value. See ETSI TS 101 369 (GSM 07.10) for more information.
link_id ACTIVESet powermode for link_id to active.
link_id PARK params

Set powermode for link_id park. Required "params" are:

avg_beacon or

max_beacon min_beacon

See Bluetooth Specification for more information on params.

link_id HOLD params

Set link's powermode to hold. Required "params" are:

avg

max min

See Bluetooth Specification for more information on params.

link_id SNIFF params

Set powermode for link_id to sniff. Required "params" are:

avg_interval or

max_interval min_interval or

max_interval min_interval attempt or

max_interval min_interval attempt timeout

Default attempt is 1, default timeout is 8.

See Bluetooth Specification for more information on params.

link_id QOS service_type token_rate peak_bandwidth latency delay_variation

Set link's QoS values. Parameters are in hex.

See Bluetooth Specification for more information on params.

link_id MASTERSwitch role to master.
link_id SLAVESwitch role to slave.

Reply

When there are parameters, there is no reply.

Example


          READY.
          SET BLUETOOTH NAME Buffy
          SET BLUETOOTH PAGEMODE 3
          SET BLUETOOTH READABLE 1
          SET BLUETOOTH CLASS 020300
          SET BLUETOOTH ROLE 0
          SET BLUETOOTH ENCRYPT 0
          SET BLUETOOTH PAGEMODE 3
          SET BLUETOOTH AUTH * 1234
          SET BLUETOOTH AUTH 00:07:80:80:bf:01 4242
          SET BLUETOOTH AUTH *
          SET BLUETOOTH PAIREXPIRE 600
          SET BLUETOOTH LISTEN 1 /bin/login 200
          SET BLUETOOTH LISTEN 2 "my/own/command with parameters" 100 5
          SET BLUETOOTH LISTEN 3
          SET PPP DEFAULTROUTE 0
          SET PPP AUTH buffy willow
          SET PPP AUTH
          SET PPP CHANNEL 4
          SET PPP WINHANDSHAKE 10
          SET PPP IP 192.168.166.0/24
          SET 0 MSC 8d
          SET CONTROL PING 60
          PING 
          PONG
          SET CONTROL PASSWORD
          SET CONTROL PASSWORD buffy
          <client reconnects>
          READY.
          SET
          ERROR PASSWORD NEEDED.
          <client reconnects>
          READY.
          buffy
          SET
          SET BLUETOOTH BDADDR 00:07:80:80:bf:01 
          SET BLUETOOTH NAME Buffy 
          SET PPP AUTH 
          SET CONTROL PASSWORD buffy
          SET
        

SAVE

Name

SAVE -- Save iWRAP settings

Synopsis

SAVE {what} {filename}

Description

SAVE command writes current settings to a file.

Table 6-1. SAVE parameters

WhatSettings
AUTHSET BLUETOOTH AUTH ...
PAIRSET BLUETOOTH PAIR ...
BTSETSET BLUETOOTH ..., but not AUTH or PAIR
OTHERSETAll but SET BLUETOOTH
ALLEverything

Reply

There is no reply.

Example


          READY.
          SAVE PAIR /etc/bluetooth.pair
          SAVE AUTH,PAIR /etc/bluetooth.security
        

LOAD

Name

LOAD -- Run iWRAP command script

Synopsis

LOAD {filename}

Description

LOAD command runs commands from a file. This is usually used with SAVE or SET CONTROL AUTOSAVE commands.

Reply

There is no reply.

Example


          READY.
          LOAD /etc/bluetooth.security
          SET CONTROL AUTOSAVE AUTH,PAIR /etc/bluetooth.security
        

PING

Name

PING -- Ask if connection is alive

Synopsis

PING

Description

The PING command can be used to check that the connection to the iWRAP server is alive.

PING can also be sent by iWRAP to the client application. In that case you have to reply with PONG command.

Reply

PONG
        

Example


          READY.
          PING
          PONG
          PING
          PONG
        

PONG

Name

PONG -- Connection is alive

Synopsis

PONG

Description

The PONG command has to be sent back if you see a PING reply from the server. If you do not answer, the connection will be closed after a few seconds.

Reply

There is no reply.

Example


          READY.
          PING
          PONG
        

ECHO

Name

ECHO -- Send a message to other iWRAP clients

Synopsis

ECHO {data}

Description

This command will broadcast it's paramerers to all iWRAP connections, including the one who sent the command.

Reply

ECHO data
        

Example


          READY.
          ECHO Hello world!
          ECHO Hello world!
        

LOCK

Name

LOCK -- Lock other iWRAP clients

Synopsis

LOCK

Description

This command will lock all other iWRAP connections, allowing commands only from this one. This includes all the PINGs and PONGs too, so be polite and do not lock it for a long time.

Reply

There is no reply.

Example


          READY.
          LOCK
          UNLOCK
        

UNLOCK

Name

UNLOCK -- Unlock other iWRAP clients

Synopsis

UNLOCK

Description

This command will open the lock created with LOCK command.

Reply

There is no reply.

Example


          READY.
          LOCK
          UNLOCK
        

SHUTDOWN

Name

SHUTDOWN -- Close iWRAP server

Synopsis

SHUTDOWN

Description

To close the iWRAP server you can use the SHUTDOWN command. This also immediately closes all active connections.

Reply

There is no reply.

Example


          READY.
          SHUTDOWN
        

SLEEP

Name

SLEEP -- Wait a second

Synopsis

SLEEP {seconds}

Description

SLEEP waits for a specified number of seconds before processing further commands.

It is only usable in rc scripts (/etc/bluetooth.conf).

Reply

There is no reply.

Example


          READY.
          SLEEP 4
        

6.5. Finding Bluetooth Devices

Table of Contents
INQUIRY -- Search for other devices
NAME -- Find a friendly name

INQUIRY

Name

INQUIRY -- Search for other devices

Synopsis

INQUIRY {timeout} [NAME] [LAP {lap}]

Description

INQUIRY is used to search for other Bluetooth devices. Timeout is in units of 1.25 seconds. If an optional NAME parameter is provided, the NAME command will be sent automatically to all found devices. LAP specifies used IAC LAP, the default is 9e8b33 (GIAC).

During the inquiry, all devices are listed as soon as they are found with INQUIRY_PARTIAL replies. If the friendly name of the device found has been cached by the iWRAP server, it is also displayed. When the inquiry times out, a summary is displayed (how many devices were found and their information repeated).

Reply

INQUIRY_PARTIAL bdaddr_of_dev_1 class_of_dev_1 "friendly name" rssi
INQUIRY_PARTIAL bdaddr_of_dev_2 class_of_dev_2 "friendly name" rssi
...
INQUIRY_PARTIAL bdaddr_of_dev_n class_of_dev_n "friendly name" rssi
INQUIRY number_of_devices_found
INQUIRY bdaddr_of_dev_1 class_of_dev_1 "friendly name"
INQUIRY bdaddr_of_dev_2 class_of_dev_2 "friendly name"
...
INQUIRY bdaddr_of_dev_n class_of_dev_n "friendly name"
        

Example


          READY.
          INQUIRY 10
          INQUIRY 0
          INQUIRY 10
          INQUIRY_PARTIAL 00:07:80:80:bf:01 120300 "willow" 255
          INQUIRY_PARTIAL 00:07:80:80:bf:02 520204 "" 255
          INQUIRY 2
          INQUIRY 00:07:80:80:bf:01 120300 "willow"
          INQUIRY 00:07:80:80:bf:02 520204 ""
          INQUIRY 10 NAME
          INQUIRY_PARTIAL 00:07:80:80:bf:01 120300 "" 255
          INQUIRY_PARTIAL 00:07:80:80:bf:02 520204 "buffy" 255
          INQUIRY 2 
          INQUIRY 00:07:80:80:bf:01 120300 ""
          INQUIRY 00:07:80:80:bf:02 520204 "buffy"
          NAME 00:07:80:80:bf:01 "willow" 
          NAME 00:07:80:80:bf:02 "buffy"
        

NAME

Name

NAME -- Find a friendly name

Synopsis

NAME {bdaddr}

Description

You can ask for the friendly name of another Bluetooth device with the NAME command.

Reply

NAME bdaddr "friendly name"
NAME ERROR bdaddr reason_code more_info
        

Example


          READY.
          NAME 00:07:80:80:bf:02
          NAME 00:07:80:80:bf:02 "buffy"
          NAME 00:07:80:80:bf:01
          NAME ERROR 00:07:80:80:bf:01 108 HCI_ERR_PAGE_TIMEOUT
        

6.6. Making a Bluetooth Connection

Table of Contents
CALL -- Connect to other device
CONNECT -- Connected to other device
NO CARRIER -- Disconnected from other device
RING -- Other device is calling you
RINGING -- Call in progress
CLOSE -- Disconnect
LIST -- List connections
STATUS -- Status of a connection

CALL

Name

CALL -- Connect to other device

Synopsis

CALL {bdaddr} SDP

CALL {bdaddr} {psm} L2CAP

CALL {bdaddr} {channel} RFCOMM

CALL {bdaddr} {uuid} RFCOMM

CALL {bdaddr} {channel} PPP [username password]

CALL {bdaddr} {uuid} PPP [username password]

CALL {bdaddr} {channel} WINPPP [username password]

CALL {bdaddr} {uuid} WINPPP [username password]

CALL {bdaddr} {channel} FORK {"/full/path/to/command and parameters"}

CALL {bdaddr} {uuid} FORK {"/full/path/to/command and parameters"}

CALL {bdaddr} {channel} FORK {host:port}

CALL {bdaddr} {uuid} FORK {host:port}

CALL {bdaddr} {PAN-destUUID} [PAN-destUUID]

Description

The CALL command is used to make a connection to other Bluetooth devices. It returns the link identifier (with an immediate reply), which will be used in subsequent commands and replies.

Always make sure you check for a correct link_id before processing replies further.

You can use the special FORK call type to create an RFCOMM connection and automatically launch an application which gets the RFCOMM connection bound to its standard input and output. The client application should modify both the stdout and stdin pipes and set NOECHO, 8BIT and all other necessary modes in the very beginning.

Note: There can be only one pending CALL at any time. You have to wait for RINGING before issuing another CALL. The RINGING event comes almost immediately after CALL - you get ERROR 008 if you try to do second call too quickly. In that case, wait some tens of milliseconds and retry. Receiving CONNECT or NO CARRIER may take some time, for example when the user is keying the PIN code.

Note: PPP is "raw" PPP without any special handshaking. WINPPP is a Windows RAS handshake followed by raw PPP. If you are unsure, use WINPPP.

Reply

CALL link_id
RINGING link_id
        

Example


          READY.
          CALL 00:07:80:80:bf:01 SDP
          CALL 0
          RINGING 0
          CONNECT 0 SDP
          CALL 00:07:80:80:bf:01 4 PPP
          CALL 1
          RINGING 1
          CONNECT 1 PPP
          CALL NameOfOtherDevice LAN PPP
          CALL 1
          RINGING 1
          CONNECT 1 PPP
          CALL 00:07:80:80:bf:02 4 WINPPP buffy willow
          CALL 2
          RINGING 2
          CONNECT 2 PPP
          CALL 00:07:80:80:bf:01 1 RFCOMM
          CALL 3
          RINGING 3
          CONNECT 3 RFCOMM 1042
          CALL 00:07:80:80:bf:01 2 FORK /bin/login
          CALL 4
          RINGING 4
          CONNECT 4 FORK
          CALL 00:07:80:80:bf:01 PAN-NAP
          CALL 5
          RINGING 5
          CONNECT 5 PAN-NAP
          CALL 00:07:80:80:bf:02 PAN-NAP PAN-NAP
          CALL 6
          RINGING 6
          CONNECT 6 PAN-NAP
          CALL 00:07:80:80:bf:02 2 FORK 127.0.0.1:23
          CALL 7
          RINGING 7
          CONNECT 7 FORK
        

CONNECT

Name

CONNECT -- Connected to other device

Synopsis

This is not a command.

Description

CONNECT is not a command, but rather a reply broadcast to you when CALL successfully makes the connection. Remember to check that the link_id matches your CALL!

On RFCOMM/L2CAP connections, there is an additional parameter called port. It is the TCP socket port number, which is used to send and receive data to and from the remote device. Connect to the port just like you connected to the iWRAP server. The connection is "raw", which means that no processing of incoming or outgoing data is made.

Note: In case of L2CAP connections, the data is handled as packets. Therefore both the incoming and outgoing data must follow the format "HDR+L2CAPDATA", where HDR is two bytes; first the low byte and then the high byte of the length of the L2CAPDATA packet and L2CAPDATA contains the actual L2CAP-packet.

Reply

CONNECT link_id SDP
CONNECT link_id RFCOMM port
CONNECT link_id L2CAP port
CONNECT link_id PPP
CONNECT link_id FORK
CONNECT link_id PAN-PANU
CONNECT link_id PAN-GN
CONNECT link_id PAN-NAP
        

Example


          READY.
          CALL 00:07:80:80:bf:01 SDP
          CALL 0
          RINGING 0
          CONNECT 0 SDP
          CALL 00:07:80:80:bf:01 LAN PPP
          CALL 1
          RINGING 1
          CONNECT 1 PPP
          CALL 00:07:80:80:bf:01 1 RFCOMM
          CALL 2
          RINGING 2
          CONNECT 2 RFCOMM 1042
          <Client can open socket connection to port 1042>
          CALL 00:07:80:80:bf:01 2 FORK /bin/login
          CALL 3
          RINGING 3
          CONNECT 3 FORK
          CALL 00:07:80:80:bf:01 PAN-NAP
          CALL 5
          RINGING 5
          CONNECT 5 PAN-NAP
          CALL 00:07:80:80:bf:02 PAN-NAP PAN-NAP
          CALL 6
          RINGING 6
          CONNECT 6 PAN-NAP
        

NO CARRIER

Name

NO CARRIER -- Disconnected from other device

Synopsis

This is not a command.

Description

NO CARRIER reply indicates that you or the remote device closed the active connection, or that your CALL failed for some reason.

See Section 6.9 for the list of reason codes. Field "more_info" is optional. If present it gives you a human readable error code or some statistics about the closed connection.

Reply

NO CARRIER link_id ERROR reason
NO CARRIER link_id
        

Example


          READY.
          CALL 00:07:80:80:bf:01 4 PPP
          CALL 0
          RINGING 0
          NO CARRIER 0 ERROR 104 HCI_ERR_PAGE_TIMEOUT
          CALL 00:07:80:80:bf:01 1 RFCOMM
          CALL 1
          RINGING 0
          CONNECT 1 RFCOMM 1042
          NO CARRIER 1 ERROR 000 IN=42,OUT=66,ELAPSED=69
        

RING

Name

RING -- Other device is calling you

Synopsis

This is not a command.

Description

The RING reply indicates an incoming call from a remote device. As with CONNECT, on RFCOMM/L2CAP calls there is an additional port parameter. Open a socket to it if you want to serve this call. PPP and PAN calls are handled internally so you don't have to do anything on them. The iWRAP server closes the connection if nobody grabs the call within 30 seconds. Special type REJECTED is used for information only: Somebody tried to call you but was rejected, usually because of failing authentication.

Reply

RING link_id bdaddr channel PPP
RING link_id bdaddr channel RFCOMM port
RING link_id bdaddr psm L2CAP port
RING link_id bdaddr PAN-PANU
RING link_id bdaddr PAN-GN
RING link_id bdaddr PAN-NAP
RING link_id bdaddr REJECTED
        

Example


          READY.
          RING 0 00:07:80:80:bf:01 4 PPP
          RING 1 00:07:80:80:bf:01 1 RFCOMM 1042
          <Client can open socket connection to port 1042>
          RING 2 00:07:80:80:bf:01 PAN-GN
        

RINGING

Name

RINGING -- Call in progress

Synopsis

This is not a command.

Description

The RINGING reply indicates that previously initiated outgoing CALL is in the state where a new outgoing CALL can be made.

Reply

RINGING link_id

Example


          READY.
          CALL 1 00:07:80:80:bf:01 1 RFCOMM
          <Making new CALL is not allowed but generates BUSY error>
          CALL 1
          <Making new CALL is not allowed but generates BUSY error>
          RINGING 1
          <Making new CALL is allowed>
          CALL 2 00:07:80:80:bf:02 2 RFCOMM
          <Making new CALL is not allowed but generates BUSY error>
          CALL 2
          <Making new CALL is not allowed but generates BUSY error>
          RINGING 2
          <Making new CALL is allowed>
          CONNECT 1 RFCOMM 1042
          <Client can open socket connection to port 1042>
          CONNECT 2 RFCOMM 1043
          <Client can open socket connection to port 1043>
        

CLOSE

Name

CLOSE -- Disconnect

Synopsis

CLOSE {link_id}

Description

The CLOSE command closes an active connection started with CONNECT or RING. Note that closing the RFCOMM data socket connection also closes the Bluetooth connection.

Reply

There is no direct reply. NO CARRIER is replied when the connection actually closes.

Example


          READY.
          CALL 00:07:80:80:bf:01 4 PPP
          CALL 1
          RINGING 1
          CONNECT 1 PPP
          CLOSE 1
          NO CARRIER 1 ERROR 000
        

LIST

Name

LIST -- List connections

Synopsis

LIST

Description

The LIST command reports active connections as well as some statistics.

Reply

LIST number_of_connections
LIST link_id status type blocksize bytes_in bytes_out elapsed_time our_msc
  remote_msc bdaddr channel direction powermode role crypt child_pid hcihandle
LIST link_id status type blocksize bytes_in bytes_out elapsed_time our_msc
  remote_msc bdaddr channel direction powermode role crypt child_pid hcihandle
...
LIST link_id status type blocksize bytes_in bytes_out elapsed_time our_msc
  remote_mscbdaddr channel direction powermode role crypt child_pid hcihandle
        

Example


          READY.
          LIST
          LIST 1
          LIST 0 CONNECTED RFCOMM 666 4242 100 30 8d 8d 00:07:80:80:bf:01 4
            OUTGOING ACTIVE MASTER PLAIN 0 2a
        

Notes

Status values are: WAITING (iWRAP server is waiting someone to connect to the datasocket created with RFCOMM CONNECT or RING event), CONNECTED (data connection is up and running), and CLOSING (datasocket has been closed, Bluetooth connection shutdown in progress).

Type is SDP, RFCOMM, PPP, PAN-PANU, PAN-GN, PAN-NAP, FORK or L2CAP.

Blocksize is the maximum transfer unit of the Bluetooth link, only for statistics.

Bytes_in and bytes_out are numbers of bytes transferred.

Elapsed_time is the number of seconds the connection has been up.

Msc is the link's MSC value for both ends.

Bdaddr is the Bluetooth address of the connected device.

Channel is the service channel of the connection.

Direction is either OUTGOING or INCOMING.

Powermode is ACTIVE, SNIFF, PARK or HOLD.

Role is MASTER or SLAVE.

Crypt is PLAIN or ENCRYPTED.

Child_pid is the PID of the child process for types PPP and FORK, zero for others.

Hcihandle is the HCI handle for this connection.

STATUS

Name

STATUS -- Status of a connection

Synopsis

This is not a command.

Description

The STATUS reply is used to inform you about changes in connection status. See also the SET command.

Reply

STATUS link_id MSC value
        

Example


          READY.
          STATUS 0 MSC 8d
        

6.7. Service Discovery

Table of Contents
SDPSEARCH -- Browse SDP Records
SDPATTR -- Browse SDP Records
SDPQUERY -- Browse SDP Records
SDP bdaddr -- Check devices SDP
SDP ADD -- Add entry to local SDP
SDP DEL -- Delete entry for local SDP
SDP LIST -- List local SDP

This section describes the commands used for Bluetooth service discovery and local SDP record manipulation. The commands and their replies make use of SDP UUID and attribute values, which are listed in the Bluetooth Assigned Numbers documentation. In the commands documented below, the most useful UUID and attribute values can, however, be replaced with keywords listed in Table 6-3. The same keywords are used in the command replies instead of numeric values, if the parameter SET BLUETOOTH READABLE is set to 1.

Table 6-3. Supported Keywords for Replacing SDP UUIDs or Attributes

Keyword(s)ValueHex Value
SDPUUID_SDP0001
RFCOMMUUID_RFCOMM0003
OBEXUUID_OBEX0008
BNEPUUID_BNEP000F
L2CAPUUID_L2CAP0100
PUBLICBROWSEGROUP, BROWSE, ROOTUUID_PUBLIC_BROWSE_GROUP1002
SERIALPORT, SPPUUID_SERIALPORT1101
LANACCESS, LANUUID_LANACCESS1102
DIALUPNETWORKING, DUNUUID_DIALUPNETWORKING1103
OBEXOBJECTPUSH, OBJP, OPPUUID_OBEXOBJECTPUSH1105
OBEXFILETRANSFER, FTPUUID_OBEXFILETRANSFER1106
PAN-PANU, PANUUUID_PANU1115
PAN-NAP, NAPUUID_NAP1116
PAN-GN, GNUUID_GN1117
PROTOCOLDESCRIPTORLIST, DESCLIST, DESCATTR_PROTOCOLDESCRIPTORLIST0004
SERVICENAME, NAMEATTR_SERVICENAME + BASE_LANG_OFFSET0000 + 0100
SECURITYDESCRIPTIONATTR_SECURITYDESCRIPTION030A
NETACCESSTYPEATTR_ NETACCESSTYPE030B
MAXNETACCESSRATEATTR_ MAXNETACCESSRATE030C

SDPSEARCH

Name

SDPSEARCH -- Browse SDP Records

Synopsis

SDPSEARCH {link_id} {uuid}

Description

The SDPSEARCH command is used to send a Service Search Request to a connected SDP server, identified with link_id. The command only supports searching for one UUID at a time (specified with the uuid parameter, 4 hex digits, or with a keyword), but several requests can be sent during the same SDP connection. However, you must wait for the reply to the previous reply before issuing new SDPSEARCH command.

Reply

SDPSEARCH link_id number_of_handles
SDPSEARCH link_id handle_1
SDPSEARCH link_id handle_2
...
SDPSEARCH link_id handle_n
        

Example


          READY.
          CALL 00:07:80:80:bf:01 SDP
          CALL 0
          RINGING 0
          CONNECT 0 SDP
          SDPSEARCH 0 LANACCESS
          SDPSEARCH 0 1
          SDPSEARCH 0 00010000
          CLOSE 0
          NO CARRIER 0 ERROR 000
        

SDPATTR

Name

SDPATTR -- Browse SDP Records

Synopsis

SDPATTR {link_id} {handle} {attribute}

Description

The SDPATTR command is used to send a Service Attribute Request to a connected SDP server, identified with link_id. The command supports requesting for one attribute value (specified with the attribute parameter, 4 hex digits, or a keyword) in one (previously retrieved) service entry (specified with the handle parameter, 8 hex digits), but several requests can be sent during the same SDP connection. However, you must wait for the reply to the previous reply before issuing new SDPATTR command.

The reply contains the response from the SDP server in encoded form. The code characters are described in Table 6-1.

Table 6-1. SDP Response Formatting Characters

CharDescription
IUnsigned integer (2, 4, or 8 hexadecimal digits) follows. Often handle, attribute, or attribute value. Attribute values are shown as text if BLUETOOTH READABLE is set to 1.
ISigned integer byte (2 hexadecimal digits) follows.
UUUID (4 or 8 hexadecimal digits) follows. Shown as text if BLUETOOTH READABLE is set to 1.
SString follows.
BBoolean follows.
<Start of sequence.
>End of sequence.
AAlternative follows.
RUniversal Resource Locator follows.

Reply

SDPATTR link_id info

Example


          READY.
          CALL 00:07:80:80:bf:01 SDP
          CALL 0
          CONNECT 0 SDP
          SDPSEARCH 0 LAN
          SDPSEARCH 0 1
          SDPSEARCH 0 00010000
          SDPATTR 0 00010000 DESCLIST
          SDPATTR 0 < I 0004 < < U 0100 > < U 0003 I 04 > > > 
          CLOSE 0
          NO CARRIER 0 ERROR 000
        

SDPQUERY

Name

SDPQUERY -- Browse SDP Records

Synopsis

SDPQUERY {link_id} {uuid} {attribute}

Description

The SDPQUERY command is used to send a Service Search Attribute Request to a connected SDP server, identified with link_id. The command supports requesting for one attribute value (specified with the attribute parameter, 4 hex digits, or a keyword) in all service entries containing one UUID (specified with the uuid parameter, 4 hex digits, or a keyword), but several requests can be sent during the same SDP connection. However, you must wait for the reply to the previous reply before issuing new SDPQUERY command.

Reply

SDPQUERY link_id info

Example


          READY.
          CALL 00:07:80:80:bf:01 SDP
          CALL 0
          RINGING 0
          CONNECT 0 SDP
          SDPQUERY 0 LAN DESCLIST
          SDPQUERY 0 < < I 0004 < < U 0100 > < U 0003 I 04 > > > >
          SDPQUERY 0 1102 0100
          SDPQUERY 0 < < I 0100 S "Lan Access using PPP" > >
          CLOSE 0
          NO CARRIER 0 ERROR 000
        

SDP bdaddr

Name

SDP bdaddr -- Check devices SDP

Synopsis

SDP {bdaddr} {uuid}

Description

The SDP bddaddr command is the most useful command for retrieving SDP information from the remote device. The command opens the SDP connection, does the SDP query, closes the connection and replies to the client in encrypted form. The format is described with SDPATTR command.

Reply

SDP bdaddr 0 ERROR reason
SDP bdaddr number_of_entries
SDP bdaddr info
SDP bdaddr info
...
SDP bdaddr info
        

Example


          READY.
          SDP 00:07:80:80:bf:01 SERIALPORT
          SDP 00:07:80:80:bf:01 1
          SDP 00:07:80:80:bf:01 < I SERVICENAME S "Serial Port" >
            < I PROTOCOLDESCRIPTORLIST < < U 0100 > < U RFCOMM I 0b > > >
        

SDP ADD

Name

SDP ADD -- Add entry to local SDP

Synopsis

SDP ADD {uuid [:uuid2]} {channel} {description}

Description

Add a new entry to the Access Server's SDP record.

Reply

SDP handle
SDP handle ERROR reason
        

Example


          READY. 
          SDP ADD LANACCESS 4 "Lan access"
          SDP 65536
          SDP ADD SERIALPORT 10 "Serial port"
          SDP 65537
          SDP ADD PAN-NAP 0 "PAN Network Access Point"
          SDP 65538
          SDP ADD L2CAP:1201 4099 "Private L2CAP for networking"
          SDP 65539
        

SDP DEL

Name

SDP DEL -- Delete entry for local SDP

Synopsis

SDP DEL {handle}

Description

Delete one entry from the Access Server's SDP record.

Reply

There is no reply.

Example


          READY. 
          SDP DEL 65537
        

SDP LIST

Name

SDP LIST -- List local SDP

Synopsis

SDP LIST

Description

List Access Server's SDP record entries.

Reply

SDP number_of_entries
SDP handle uuid channel description
SDP handle uuid channel description
...
SDP handle uuid channel description
        

Example


          READY. 
          SDP LIST
          SDP 1
          SDP 65536 LANACCESS 4 "Lan access"
        

6.8. Example Sessions

Outgoing RFCOMM Call:


      READY.
      CALL 00:07:80:80:bf:01 1 RFCOMM
      CALL 2
      RINGING 2
      CONNECT 2 RFCOMM 1042
      STATUS 2 MSC 8d
      <Client opens socket connection to port 1042 and transfers data>
      CLOSE 2
      NO CARRIER 2 ERROR 000
    

Incoming RFCOMM Call:


      READY.
      RING 2 00:07:80:80:bf:01 1 RFCOMM 1042
      STATUS 2 MSC 8d
      <Client opens socket connection to port 1042 and transfers data>
      NO CARRIER 2 ERROR 000
    

6.9. Error Codes

Some commands may reply with an error code. The human-readable name of the error is displayed as well, if the SET BLUETOOTH READABLE setting has a value of 1. Error code 8 indicates that the iWRAP server is busy executing any number of commands; there can be several client applications using the stack. Just wait a few seconds and try again. Other error codes indicate unexpected, but often only temporary, communication problems.

You can analyze the error from the numeric code. Values bigger than or equal to 900 are iWRAP errors, described in Table 6-5.

Table 6-5. iWRAP Errors

CodeTextual FormReason
900SERVICE_NOT_FOUNDTried to CALL a device whose SDP records doesn't include requested service.
901ALREADY_CONNECTEDTried to CALL a device and a service channel that is already connected.
902OUT_OF_HANDLESTried to CALL but there are too many open connections.
903INVALID_ADDRESS_<addr>Tried to CALL a device with a friendly name that couldn't be found with inquiry.
904REJECTEDIncoming call was rejected by the iWRAP server.
905BUSYTried to issue SDPATTR but another SDP request was in progress.
906BUSYTried to issue SDPQUERY but another SDP request was in progress.
907NOT_CONNECTEDTried to CLOSE a connection handle that is not active.
908BUSYTried to issue SDPSEARCH but another SDP request was in progress.
909INVALID_ADDRESSTried to NAME a device with a friendly name that can't be found with inquiry.
90aBUSYTried to issue NAME but another NAME was in progress.

Other error codes can be analyzed as follows. For example NO CARRIER ERROR 465: The number 465 is hexadecimal, sum of 0x400 and 0x65, where 0x400 is a mask which means this is an RFCOMM level error and 0x65 (decimal 101) that the RFCOMM error was connection timeout.

Table 6-6. Errors Masks

MaskError level
0x100HCI
0x200L2CAP
0x300SDP
0x400RFCOMM

The error codes for each mask are listed in the following tables.

Table 6-7. HCI Error Codes

HCI ErrorCode
HCI_SUCCESS0
HCI_ERR_UNKNOWN_COMMAND1
HCI_ERR_NOCONNECTION2
HCI_ERR_HARDWARE_FAIL3
HCI_ERR_PAGE_TIMEOUT4
HCI_ERR_AUTHENTICATION_FAILED5
HCI_ERR_KEY_MISSING6
HCI_ERR_MEMORY_FULL7
HCI_ERR_CONNECTION_TIMEOUT8
HCI_ERR_MAX_NUM_CONNECTIONS9
HCI_ERR_MAX_NUM_SCO_CONNECTIONS10
HCI_ERR_ACL_CONN_ALREADY_EXISTS11
HCI_ERR_COMMAND_DISALLOWED12
HCI_ERR_HOST_REJECTED_0D13
HCI_ERR_HOST_REJECTED_0E14
HCI_ERR_HOST_REJECTED_0F15
HCI_ERR_HOST_TIMEOUT16
HCI_ERR_UNSUPPORTED_PARAM_VALUE17
HCI_ERR_INVALID_HCI_PARAMETER_VALUE18
HCI_ERR_OTHER_END_TERMINATE_1319
HCI_ERR_OTHER_END_TERMINATE_1420
HCI_ERR_OTHER_END_TERMINATE_1521
HCI_ERR_CONNECTION_TERMINATE_LOCALLY22
HCI_ERR_REPEATED_ATTEMPTS23
HCI_ERR_PARING_NOT_ALLOWED24
HCI_ERR_UNKNOWN_LMP_PDU25
HCI_ERR_UNSUPPORTED_REMOTE_FEATURE26
HCI_ERR_SCO_OFFSET_REJECTED27
HCI_ERR_SCO_INTERVAL_REJECTED28
HCI_ERR_SCO_AIR_MODE_REJECTED29
HCI_ERR_INVALID_LMP_PARAMETERS30
HCI_ERR_UNSPECIFIED_ERROR31
HCI_ERR_UNSUPPORTED_LMP_PARAMETER_VAL32
HCI_ERR_ROLE_CHANGE_NOT_ALLOWED33
HCI_ERR_LMP_RESPONSE_TIMEOUT34
HCI_ERR_LMP_ERROR_TRANSACTION_COLLISION35
HCI_ERR_LMP_PDU_NOT_ALLOWED36
HCI_ERR_ENCRYPTION_MODE_NOT_ACCEPTABLE37
HCI_ERR_UNIT_KEY_USED38
HCI_ERR_QOS_NOT_SUPPORTED39
HCI_ERR_INSTANT_PASSED40
HCI_ERR_PAIRING_WITH_UNIT_KEY_NOT_SUPP41
HCI_ERR_ILLEGAL_HANDLE100
HCI_ERR_TIMEOUT101
HCI_ERR_OUTOFSYNC102
HCI_ERR_NO_DESCRIPTOR103

Table 6-8. L2CAP Error Codes

L2CAP ErrorCode
L2CAP_NO_CAUSE0
L2CAP_ERR_PENDING1
L2CAP_ERR_REFUS_INV_PSM2
L2CAP_ERR_REFUS_SEC_BLOCK3
L2CAP_ERR_REFUS_NO_RESOURCE4
L2CAP_ERR_TIMEOUT_EXTERNAL 0xee

Table 6-9. SDP Error Codes

SDP ErrorCode
SDP_ERR_RESERVED0
SDP_ERR_UNSUPPORTED_SDP_VERSION1
SDP_INVALID_SERVICE_RECORD_HANDLE2
SDP_INVALID_REQUEST_SYNTAX3
SDP_INVALID_PDU_SIZE4
SDP_INVALID_CONTINUATION_STATE5
SDP_INSUFFICIENT_RESOURCES6
SDP_ERR_UNHANDLED_CODE100
SDP_ERR_TIMEOUT101
SDP_ERR_NOTFOUND102
SDP_INVALID_RESPONSE_SYNTAX103
SDP_NOT_FOUND (not really an error)200

Table 6-10. RFCOMM Error Codes

RFCOMM ErrorCode
RFCOMM_SUCCESS 0
RFCOMM_ERR_NORESOURCES1
RFCOMM_ERR_ILL_PARAMETER2
RFCOMM_ERR_REJECTED (Connection setup was rejected by remote side)100
RFCOMM_ERR_TIMEOUT (Connection timed out)101
RFCOMM_ERR_NSC (Non supported command received)102
RFCOMM_ERR_ILLPARAMETER103

If the problems persist after restarting the communication parties, please contact Bluegiga Technologies as instructed in Section 1.2.


6.10. OBEX Libraries

WRAP Access Server SDK contains libraries for making OBEX clients. However, before starting to implement a new client, it is strongly recommended to try out the obexput and obexget applications. It is very easy to call these applications from your own code, often removing completely the need to use the low level OBEX libraries.

The obexput application can be called with special parameters (- as bdaddr and 1 as channel) from the iWRAP interface, for example like this:

CALL bdaddr OBJP FORK "/usr/bin/obexput - 1 filename.ext"

There are two libraries for making your own OBEX clients. See include/obex.h. libobex contains mostly low level functions and libobexclient high level functions. Their usage in practice can be studied using the source code of the obexbrowser application found in asdk/examples/obexbrowser/ directory.

Warning

If you write your own ObjP/FTP program using OBEX libraries, you have to get a Bluetooth profile certificate for it! obexput, obexget, obexserver and obexbrowser are already certified.

Warning

OBEX libraries are not thread safe! You have to fork separate process for each connection.


6.10.1. libobex

int obex_init(int s_in, int s_out);

Initialize the OBEX library. Must be the first function called. s_in and s_out are data handles for reading and writing.

int obex_deinit(void);

Deinitialize the OBEX library. Must be the last function called.

struct obex_t * obex_recv_packet(int timeout, int s_out);

Receive one OBEX packet. You have to free() the received packet! If NULL is returned, you have to disconnect next (timeout, dead socket, ...). If timeout is zero, wait forever. If timeout is nonzero, wait up to timeout seconds.

int obex_send_packet(struct obex_t * o);

Send one packet. Does not call free().

void obex_packet(struct obex_t * o, int command);

Initialize an OBEX packet to empty command type packet.

void obex_packet_byte(struct obex_t * o, int header, char c);

void obex_packet_long(struct obex_t * o, int header, long l);

void obex_packet_string(struct obex_t * o, int header, char * s);

void obex_packet_binary(struct obex_t * o, int header, char * data, int len);

void obex_packet_ascii(struct obex_t * o, int header, char * s);

Add byte/long/unicode-string/binary/ascii data to an OBEX packet.

int obex_find_string(struct obex_t * o, int startoffset, int header, char * dest);

int obex_find_binary(struct obex_t * o, int startoffset, int header, char * dest);

int obex_find_ascii(struct obex_t * o, int startoffset, int header, char * dest);

int obex_find_long(struct obex_t * o, int startoffset, int header, long * dest);

Find header data from an OBEX packet. Returns -1 if not found, otherwise the length of the data.

void obex_mime(char * filename, char * mime);

Return mime type for filename.


6.10.2. libobexclient

int obex_connect(char * target);

Connect to target UUID. Target can be NULL (Object Push connect). Returns 0 if no errors, -1 if timeout, -2 if broken socket, >0 if OBEX error (see IrDA Object Exchange Protocol by Infrared Data Association for OBEX response codes).

int obex_disconnect(void);

Disconnect. Returns 0 if no errors, -1 if timeout, -2 if broken socket, >0 if OBEX error (see IrDA Object Exchange Protocol by Infrared Data Association for OBEX response codes).

void obex_progress_t(void * arg, size_t position, size_t filesize);

int obex_put(char * name, char * type, char * data, long * length, FILE * fdata, obex_progress_t progress, void * progressarg);

Put local file / data block to remote.

name is remote file name. Can be NULL.

type is remote MIME type. Can be NULL.

data/length are pointer to data block and length. Can be NULL/0.

fdata is file handle for local file, if data was NULL.

progress is a function to be called after each data block. Can be NULL. progressarg will be passed as parameter.

Returns 0 if no errors, -1 if timeout, -2 if broken socket, >0 the OBEX error code (see IrDA Object Exchange Protocol by Infrared Data Association for OBEX response codes).

int obex_get(char * name, char * type, char * data, long max_length, FILE * fdata, obex_progress_t progress, void * progressarg);

Get remote file to local.

name is remote file name. Can be NULL.

type remote MIME type. Can be NULL.

data/max_length are pointer to data block and length. Can be NULL/0.

fdata is file handle for local file, if data was NULL.

progress is a function to be called after each data block. Can be NULL. progressarg will be passed as parameter.

Returns >=0 (number of bytes received) if no errors, -1 if timeout, -2 if broken socket, <0 if OBEX error (see IrDA Object Exchange Protocol by Infrared Data Association for OBEX response codes).

int obex_setpath(char * name, int flags);

Setpath to name with flags. Returns 0 if no errors, -1 if timeout, -2 if broken socket, >0 if OBEX error (see IrDA Object Exchange Protocol by Infrared Data Association for OBEX response codes).


6.10.3. obexbrowser

The application obexbrowser is an Object Push Profile (ObjP) and File Transfer Profile (FTP) client, and is shipped with Access Server in both binary form (as it is part of the Access Server platform) and in source form (at it is a good example of using the OBEX libraries).

For an outgoing ObjP/FTP call you need to:

  1. Make the outgoing RFCOMM call from iWRAP.

    For example: CALL 00:07:80:80:bf:01 FTP RFCOMM

  2. Run obexbrowser from the command line. It takes two parameters: hostname and port number. Hostname is usually localhost and port number can be read from the iWRAP server's CONNECT reply.

    For example: obexbrowser localhost 1024

obexbrowser itself supports all the OBEX commands. See the source code and the IrDA Object Exchange Protocol by Infrared Data Association. The commands obexbrowser accepts are described in Table 6-11.

Table 6-11. obexbrowser Commands

CommandDescription
connectMakes default INBOX connect (Object Push).
connect-ftpMakes connect to FTP UUID.
disconnectDisconnect.
cd/Setpath to root.
cd pathSetpath to path.
cd..Setpath with backup.
md pathCreate subdirectory path.
put local remotePut local to remote. Use - for local name to delete remote file.
get local remoteGet remote to local.
cat remoteCat remote.
lsGet mime x-obex/folder-listing without filename.

Example:


          iWRAP server:
          READY.
          CALL 00:07:80:80:bf:01 3 RFCOMM
          CALL 0
          RINGING 0
          CONNECT 0 RFCOMM 1024
          Command line:
          obexbrowser localhost 1024
          connect
          connect=00
          get remote.vcf -
          get=143
          put default.vcf
          put=00
          disconnect
          disconnect=00
          Ctrl-D
          iWARP server:
          NO CARRIER 0 ERROR 000
        


Chapter 7. I/O API

The Bluegiga I/O API defines how to access the Access Server's LEDs, buzzer and general purpose I/O and contains functions to accomplish this.

The I/O API is accessed by using functions, macros, and constants defined in the header file bgio.h. You can use the macros by including the file.

Example:

#include <bgio.h>

7.1. Led and Buzzer API

Access Server's LEDs are controlled by using the following macros and functions. You need to add an extra linker flag LDFLAGS = -lbgio to your Makefile when using the LED API.

int BGIO_LED(int lednum);

BGIO_LED returns ledmask for lednum. lednum is the number of LED in the range 0 to BGIO_LED_MAX.

int bgio_led_status(void);

bgio_led_status reads LEDs and returns current ledmask.

void bgio_led_set(int ledmask);

bgio_led_set sets LEDs in ledmask ON.

int BGIO_LED(int lednum);

void bgio_led_clr(int ledmask);

bgio_led_clr sets LEDs in ledmask OFF.

ledmask is a bit mask where bit 0 is LED 0, bit 1 is LED 1, etc..

See asdk/examples/io/led/ for a LED API example.

LEDs and the buzzer can also be accessed via /dev/led. You can check the status of the LEDs and buzzer with cat /dev/led command and set LEDs or buzzer with echo abcde > /dev/led command. A letter in upper case means that the LED or buzzer is ON, lower case means that the LED or buzzer is OFF. Letter "a" is the buzzer, letters "b".."e" are LEDs 1..4.


7.2. GPIO API

The Digital I/O pins of the Access Server can be controlled write-only using the device /dev/io in a same way that the LEDs and buzzer described above.

The letter-to-I/O mapping of the 16 pins is as follows, when looking at the connector:


      hgfedcba
      Xijklmno
    

X is the ground pin (and cannot be set).

o is the voltage sense pin (user can use any voltage from 3.3V to 5.0V).

The I/O must first be enabled by echo Z > /dev/io. After that, pins can be driven up by echoing corresponding upper case letter (A-N) or down by echoing lower case letter (a-n) to the device /dev/io.

Example:


      [root@wrap /] modprobe io
      [root@wrap /] echo ZaBcD > /dev/io
    

Chapter 8. Advanced Use Cases for Access Server

This chapter will give you advanced use cases for Access Server. The cases listed here are not so trivial, the simple cases are already listed mostly in Chapter 6.


8.1. Making Access Server Secure

TBA


8.2. Digital Pen

Access Server will support most of the digital pens. The examples below are for Nokia Digital Pen SU-1B but they should apply to other pens too.

To setup Access Server for digital pens you have to give following iWRAP commands. The best way to do this is to edit /etc/bluetooth.conf file from the command prompt or with the setup application.


      # Emulate a phone
      SET BLUETOOTH CLASS 500204
      SET BLUETOOTH LISTEN 1 "*/usr/sbin/dun"
      SDP ADD DUN 1 "Digital Pen DUN"
      # Add two pens and their pin codes
      SET BLUETOOTH AUTH 00:07:cf:51:f6:8e 9079 --REPLY
      SET BLUETOOTH AUTH 00:07:cf:51:d5:2b 6603 --REPLY
      # Note: See pen's manual for correct bluetooth address and pin code
      # Optionally reject all other incoming connections
      SET BLUETOOTH AUTH * - --NEWPAIR
    

After these settings you can pair and use the digital pen with Access Server just like you would use it with a phone. Both modes, receiving pictures to Access Server, and external server via dialup, are supported.


8.3. SPP to Socket

Access Server can automatically forward an incoming connection to an external server via TCP/IP. This is mostly used to forward incoming SPP connections, but is not limited to that.

To setup Access Server to do this you have to give following iWRAP commands. The best way to do this is to edit /etc/bluetooth.conf file from the command prompt or with the setup application.


      # Forward incoming connection to IP 192.168.42.99 socket 7444
      SET BLUETOOTH LISTEN 1 192.168.42.99:7444
      # Add SDP record for SPP
      SDP ADD SPP 1 "SPP to External Server"
    

In addition to those commands you have to disable Serial Port Profile from the setup application. For more information see Section 2.4.

After these settings all incoming RFCOMM connections to channel 1 (SPP) will be forwarded to IP 192.168.42.99 socket 7444 using TCP connection.


Chapter 9. Certification Information and WEEE Compliance

WRAP Access Server is CE approved and Bluetooth qualified v.1.1 and v.1.2. It has been measured against the following specification standards: Radio spectrum Matters (R&TTE, Article 3.2) ETSI EN 300 328-2 v1.3.1. / EN 301 489-1/17, and FCC part 15.247. Supported Bluetooth profiles are: GAP, SDAP, LAN client and server, SPP A and B, FTP client and server, ObjP client and server, PAN-PANU, PAN-GN and PAN-NAP.

Hereby, Bluegiga Technologies declares that this WRAP Access Server is in compliance with the essential requirements and other relevant provisions of Directive 1999/5/EC.

This device complies with Part 15 of the FCC Rules.

Operation is subject to the following two conditions:

  1. This device may not cause harmful interference, and

  2. This device must accept any interference received, including interference that may cause undesired operation.

This equipment has been tested and found to comply with the limits for a Class B digital device, pursuant to Part 15 of the FCC Rules. These limits are designed to provide reasonable protection against harmful interference in a residential installation. This equipment generates, uses, and can radiate radio frequency energy and, if not installed and used in accordance with the instructions, may cause harmful interference to radio communications. However, there is no guarantee that interference will not occur in a particular installation.

If this equipment does cause harmful interference to radio or television reception, which can be determined by turning the equipment off and on, the user is encouraged to try to correct the interference by 1 or more of the following measures:

Warning: Changes or modifications made to this equipment not expressly approved by Bluegiga Technologies Inc. may void the FCC authorization to operate this equipment.

The radiated output power of the WRAP Access Server is far below the FCC radio frequency exposure limits. Nevertheless, the WRAP Access Server should be used in such a manner that the potential for human contact during normal operation is minimized.

To meet the FCC's exposure rules and regulations:

Please notice that the output power listed in the grant uses different units depending on the type of the equipment, e.g.:

  1. The output power for 802.11a/b/g/h equipment or similar equipment approved under �15.247 or �15.407 is listed as Conducted RF power. �15.247 or �15.407 limit the e.i.r.p. to 4 W, so this restriction is fulfilled.

  2. The output power for Part 22 cellular equipment is listed as e.r.p. The relationship between e.r.p. and e.i.r.p. is the following one:

    e.i.r.p. = 1.64 x e.r.p.

  3. The output power for Part 24 PCS equipment is listed as e.i.r.p.

  4. For other type of equipment please consult the distributor in order to assure the restriction is fulfilled.

Note: Definitions:

Effective Radiated Power (e.r.p.) (in a given direction): The product of the power supplied to the antenna and its gain relative to half-wave dipole in a given direction.

Equivalent Isotropically Radiated Power (e.i.r.p.) (in a given direction): The product of the power supplied to the antenna and its gain relative to an isotropic antenna.

The table below is excerpted from Table 1B of 47 CFR 1.1310 titled Limits for Maximum Permissible Exposure (MPE), Limits for General Population/Uncontrolled Exposure:

Table 9-1. Limits for Maximum Permissible Exposure (MPE), Limits for General Population/Uncontrolled Exposure

Frequency Range (MHz)Power Density (mW/cm�)
300 - 1500f/1500
1500 - 100 0001.0

The equipment WRAP Access Server transmits in the 2400 - 2483.5 MHz frequency range, so the applicable MPE limit is 1 mW/cm�. The equipment can be provided with up to 4 Bluetooth modules WRAP THOR 2022-1-B2B (FCC ID: QOQWRAP2022-1-B2B):

Under the conditions stated above MPE limits can be guaranteed as the calculation below shows:

Example 9-1. 15.247 or 15.407 Compact Flash Card with maximum allowed e.i.r.p. of 4W

Using equation from page 18 of OET Bulletin 65, Edition 97-01:

S = P⋅G/4nR� = Prad (e.i.r.p.)/4nR�

Where,

S = power density in mW/cm� (1 mW/cm� used for G)

P = power input to the antenna

G = power gain of the antenna in the direction of interest relative to an isotropic radiator

R = distance to the centre of radiation of the antenna in cm (20cm Prediction distance)

S Compact Flash card = Prad (e.i.r.p.) Compact Flash card /4nR� = 4000mW/4n(20cm)�

we obtain the following results:

S Compact Flash card = 0.795774mW/cm�

S Total = 4 x S module + S Compact Flash card = 4 x 0.003579mW/cm� + 0.795774mW/cm�

S Total = 0.014316mW/cm� + 0.795774mW/cm� = 0.795774mW/cm� < 1mW/cm�

Example 9-2. Part 22 Compact Flash Card with maximum e.r.p. of 1.5 W (Category excluded of MPE evaluation according to �2.1091)

Using equation from page 18 of OET Bulletin 65, Edition 97-01 and considering that e.i.r.p. = 1.64 x e.r.p.:

S Compact Flash card = Prad (e.i.r.p.) Compact Flash card /4nR� = 1500 x 1.64mW / 4n(20cm)�

S Compact Flash card = 0.489401mW/cm�

S Total = 4 x S module + S Compact Flash card = 4 x 0.003579mW/cm� + 0.489401mW/cm�

S Total = 0.014316mW/cm� + 0.489401mW/cm� = 0.503717mW/cm� < 1 mW/cm�

Example 9-3. Part 24 Compact Flash Card with maximum e.r.p. of 3 W (Category excluded of MPE evaluation according to �2.1091)

Using equation from page 18 of OET Bulletin 65, Edition 97-01 and considering that e.i.r.p. = 1.64 x e.r.p.:

S Compact Flash card = Prad (e.i.r.p.) Compact Flash card /4nR� = 3000 x 1.64mW / 4n(20cm)�

S Compact Flash card = 0.978803 mW/cm�

S Total = 4 x S module + S Compact Flash card = 4 x 0.003579mW/cm� + 0.978803 mW/cm�

S Total = 0.014316mW/cm� + 0.978803mW/cm� = 0.993119mW/cm� < 1mW/cm�

WEEE Compliance

The crossed-out wheeled bin means that within the European Union the product must be taken to separate collection at the product end-of-life. Do not dispose of these products as unsorted municipal waste.


Chapter 10. About Bluegiga Technologies

Bluegiga Technologies Ltd. provides wireless local area networks and communication systems based on Bluetooth technology.

Bluegiga connects Bluetooth enabled devices with corporate networks and the Internet. In addition, Bluegiga products create easy-to-use and secure wireless links between Bluetooth devices and applications.

Bluetooth connectivity extended to business and industrial applications

Bluetooth technology has become a new standard functionality in cell phones, PDAs, laptops and an increasing number of other devices. With GSM-level security and low power drain, Bluetooth links are utilized to enable cost efficient wireless connectivity.

For many, Bluetooth technology is first encountered as a flexible replacement to infrared links and cables, and as convenient hands-free accessories to mobile phones. With the introduction of intelligent access servers and Bluetooth modules that provide a connection between Bluetooth devices and other network technologies, the way is paved for more demanding business and industrial applications.

Using a Bluetooth access server, content and applications in both the Internet and corporate intranets can be wirelessly accessed and synchronized using smart phones and other Bluetooth enabled devices. With significantly lower power drain and superior flexibility compared to WiFi technologies, Bluetooth is an ideal link between small battery-operated wireless devices and data networks.

Versatile and cost-efficient network access from any device with a Bluetooth link provides a platform for a wide variety of new wireless services - in marketing, promotion, retail, sports, wellness, and more. First business applications include distribution and synchronization of content; near future opportunities include - among many others - the use of Bluetooth enabled smartphones as VoIP terminals.

Comprehensive product portfolio to design and build Bluetooth networks

Bluegiga products are software configurable for versatile integration. Bluegiga access products link wireless devices as integral and secure parts of corporate networks and provide an ideal solution for remote monitoring applications. In addition, Bluegiga range includes products to replace cables in various industrial, M2M and telemetry applications, enhancing flexibility and decreasing costs.

Bluegiga WRAP Access Server enables the deployment of Bluetooth connectivity as a new virtue of existing networks without network reconfiguration. Bluegiga's first-generation access products have been on the market since 2002, and the new Access Server, the first device to integrate multiple Bluetooth modules with WiFi, GSM, GPRS and Ethernet LAN connectivities, was commercially launched in February 2004.

Bluegiga WRAP THOR Bluetooth modules with 100 meter range are robust, lightweight and flexibly embeddable. The modules enable device manufacturers to easily add secure and robust wireless communications links in both new and existing applications. Bluegiga also offers a range of development tools, software versions and flexible production models from low to high-volume applications with customized or standard Bluegiga software options.

Enabling new wireless services

A pioneering innovator in Bluetooth technology, Bluegiga has developed an easy-to-use, secure and cost-efficient solution to connect Bluetooth devices to the Internet, corporate intranets and other devices, enabling a wide range of new wireless services.

Founded in 2000, Bluegiga is headquartered in Espoo, Finland and privately held. Bluegiga is an associate member of the Bluetooth Special Interest Group. Bluegiga products are globally available via a network of qualified distributors, original equipment and design manufacturers, and system integrators.


Appendix A. Directory Structure

Directory Tree                          Type Note
==============                          ==== ====
/                                       f    whole filesystem is root writable
|-- bin                                 f     
|-- boot                                f
|-- dev                                 d    
|   |-- [other devices]                 d     
|   `-- shm                             d    resizable ramdisk
|       |-- etc                         w    resolv.conf
|       |-- tmp                         w    /tmp
|       |   |-- in                      w    smsgw dir (if enabled)
|       |   |-- logo                    w    smsgw dir (if enabled)
|       |   |-- obex                    w    obexserver dir
|       |   |-- out                     w    smsgw dir (if enabled)
|       |   |-- tone                    w    smsgw dir (if enabled)
|       `-- var                         w    ramdisk part of /var
|           |-- lock                    w    
|           |   `-- subsys              w     
|           |-- log                     w
|           |-- run                     w
|           `-- tmp                     w
|-- etc                                 f    system config and init scripts
|   |-- init.d -> rc.d/init.d           l
|   |-- pcmcia                          f
|   |   `-- cis                         f
|   |-- ppp                             f
|   |   `-- peers                       f
|   |-- rc.d                            f
|   |   |-- init.d                      f
|   |   `-- rc3.d                       f
|   |-- rc3.d -> rc.d/rc3.d             l
|   |-- snmp                            f
|   |-- ssh                             f
|   `-- sysconfig                       f
|-- lib                                 f    system libraries
|   |-- iptables                        f
|   `-- modules                         f
|           `-- [module directories]    f     
|-- mnt                                 f    mount points
|   |-- mtd                             f2   second flash, 8MB for user use
|   |-- nfs                             f    empty mount point 
|   `-- usb                             f    empty mount point 
|-- opt                                 f     
|-- proc                                p    proc filesystem
|-- sbin                                f    system binaries
|-- tmp -> dev/shm/tmp                  l    temporary data (ramdisk)
|-- usr                                 f
|   |-- bin                             f
|   |-- include                         f
|   |-- lib                             f
|   |-- local                           f
|   |   |-- bin                         f    user binaries
|   |   |-- games                       f
|   |   |-- include                     f
|   |   |-- lib                         f
|   |   |-- man                         f
|   |   |-- sbin                        f
|   |   |-- share                       f
|   |   `-- src                         f
|   |-- sbin                            f
|   `-- share                           f
|       |-- man                         f
|       |-- misc                        f
|       `-- terminfo                    f
|           |-- a                       f
|           |-- l                       f
|           |-- v                       f
|           `-- x                       f
`-- var                                 f
    |-- cache                           f
    |-- empty                           f
    |-- lib                             f
    |   |-- b2b                         f
    |   |-- dpkg                        f
    |       `-- info                    f   
    |   |-- misc                        f
    |   `-- setup                       f
    |-- local                           f
    |-- lock -> ../dev/shm/var/lock     l
    |-- log -> ../dev/shm/var/log       l    log files
    |-- opt                             f
    |-- run -> ../dev/shm/var/run       l 
    |-- spool                           f
    |   `-- cron                        f
    |       `-- crontabs                f
    |-- tmp -> ../dev/shm/var/tmp       l
    `-- www                             f
        `-- html                        f    WWW pages
Types
=====
d = device file system, can be used to configure Linux
f = FLASH file system, read/write, files will be saved on power-down
l = link, symbolic link
p = PROC file system, can be used to configure Linux
w = RAM file system, read/write, files will be lost on power-down
    


Appendix B. Setup Options

B.1. Security settings

Submenu containing most important security settings, like passwords.

  1. New root password []

    Password of "root" user. If you write something here, the default password
    "buffy" will be changed. Empty means do not change. Please note that once
    you set it, there is no way to uncrypt it. You either have to remember it
    or change it again to something you do remember.
  2. iWRAP password [buffy]

    The password required to be entered before any commands when discussing with
    iWRAP. Can be empty.
  3. Do not require iWRAP password from local clients [Yes]

    Ask iWRAP password from remote clients only, not from local (127.0.0.1).
  4. Bluetooth PIN code []

    The PIN code used when establishing connections. Up to 16 characters are
    significant. If there is no default PIN code, the Access Server does not
    require a PIN code when establishing connections. If in this case the other
    device requests a PIN code, the default PIN code 1234 is sent, following the
    Bluetooth specification.
  5. Root user password for FTP [buffy]

    Password of the "root" user for FTP connections.
    Use "*" to allow everything (aka anonymous user).
  6. Allow anonymous FTP login [Yes]

    Allow anonymous FTP login or not.
  7. WWW passwords [/etc/httpd.conf]

    Enables editing of the WWW Server configuration file. It consists of lines
    in format "/dir:username:password" which specify the username and password
    required on URLs starting with "/dir". More than one username:password can
    be defined for same "/dir" by adding multiple lines.

B.2. Generic settings

Submenu containing generic settings.

  1. New root password []

    Password of "root" user. If you write something here, the default password
    "buffy" will be changed. Empty means do not change. Please note that once
    you set it, there is no way to uncrypt it. You either have to remember it
    or change it again to something you do remember.
  2. Size of the ramdisk in kilobytes [16384]

    The size of the ramdisk (/dev/shm/). Sizes below minimum (currently 256)
    and above maximum (currently 20480) are not allowed. The Linux kernel
    adjusts the size of the ramdisk dynamically.
  3. Use local syslog service [Yes]

    This option determines whether or not the System Logger (syslogd) should
    log locally to /var/log/messages.
  4. IP address of the remote syslog server [192.168.42.1]

    The IP address of the device in the network to which the System Logger
    should log to.
    The remote device must be configured to accept syslogd connections from the
    WRAP Access Server. See the system logger documentation on the remote device
    for more information on how to accomplish that.

B.3. Network settings

Submenu containing network settings.

  1. Hostname of the unit [wrap]

    The hostname of the WRAP Access Server. Local applications will see this
    name. May be changed by dynamic network configuration.
  2. Domain of the unit [localdomain]

    The domain name of the WRAP Access Server. Local applications will see this
    name. May be changed by dynamic network configuration.
  3. Enable ethernet cable interface [Yes]

    Enable ethernet cable interface.
  4. Enable WiFi hostap interface [No]

    Enable WiFi hostap interface
  5. Enable WiFi hermes interface [No]

    Enable WiFi hermes interface
  6. Enable GPRS interface [No]

    Enable GPRS interface
  7. Time server (NTP) []

    Hostname or IP address of the time server connected at system boot to
    retrieve correct time using the Network Time Protocol. The ntp client is
    also started to keep the clock in correct time while Access Server is
    powered.
  8. Time server (rdate) []

    Hostname or IP address of the time server connected at system boot to
    retrieve correct time using the Time Protocol (RFC 868).
    If possible, please use NTP instead.
  9. Zeroconf interface [nap]

    Possible interface names are "nap", "gn" and "none".

B.3.1. Default interface settings

Default interface settings.

  1. Use dynamic network configuration [Yes]

    This option determines whether or not automatic configuration of the default
    network interface (nap) using DHCP should be attempted at boot. If set to no, you
    have to manually enter IP address and other network settings.
  2. IP address [192.168.42.3]

    The IP address of the Access Server.
  3. Subnet mask [255.255.255.0]

    The network mask of the Access Server.
  4. IP address of the default gateway [192.168.42.254]

    The IP address of the default gateway in the LAN to which the Access Server
    is connected.
  5. List of name server IPs [192.168.42.1 192.168.42.2]

    The IP address(es) of the name servers, separated by space.

B.3.2. Ethernet cable settings

Ethernet cable settings.

  1. Assign to default interface [Yes]

    Assign to default interface.
  2. Use dynamic network configuration [Yes]

    Use dynamic network configuration.
  3. IP address [192.168.43.3]

    IP address.
  4. Subnet mask [255.255.255.0]

    Subnet mask.

B.3.3. WiFi hostap settings

WiFi hostap settings

  1. Use AP master mode [No]

    Use AP master mode
  2. Extra commands for AP master mode [/etc/sysconfig/ifup-wlan0]

    Extra commands for AP master mode
  3. ESSID []

    ESSID
  4. Nickname [Bluegiga]

    Nickname
  5. WEP encryption key []

    WEP encryption key
  6. Assign to default interface [Yes]

    Assign to default interface
  7. Use dynamic network configuration [Yes]

    Use dynamic network configuration
  8. IP address [192.168.44.3]

    IP address
  9. Subnet mask [255.255.255.0]

    Subnet mask

B.3.4. WiFi hermes settings

WiFi hermes settings

  1. ESSID []

    ESSID
  2. Nickname [Bluegiga]

    Nickname
  3. WEP encryption key []

    WEP encryption key
  4. Assign to default interface [Yes]

    Assign to default interface
  5. Use dynamic network configuration [Yes]

    Use dynamic network configuration
  6. IP address [192.168.45.3]

    IP address
  7. Subnet mask [255.255.255.0]

    Subnet mask

B.3.5. GPRS settings

GPRS settings

  1. Dial on demand [Yes]

    Dial on demand
  2. SIM card PIN code []

    SIM card PIN code
  3. Username [blue]

    Username for GPRS network. Contact your GSM operator for correct value.
    Some examples:
    Elisa/Finland:   blue
    Sonera/Finland:  blue
    Wataniya/Kuwait: blue
    Etisalat/UAE:    Mnet
    See also: http://www.kh-gps.de/gprsset.htm
  4. Password [giga]

    Password for GPRS network. Contact your GSM operator for correct value.
    Some examples:
    Elisa/Finland:   giga
    Sonera/Finland:  giga
    Wataniya/Kuwait: giga
    Etisalat/UAE:    Mnet
    See also: http://www.kh-gps.de/gprsset.htm
  5. Internet APN [internet]

    Internet APN for GPRS network. Contact your GSM operator for correct value.
    Some examples:
    Elisa/Finland:   internet
    Sonera/Finland:  internet
    Wataniya/Kuwait: action.wataniya.com
    Etisalat/UAE:    mnet
    See also: http://www.kh-gps.de/gprsset.htm
  6. Extra parameters for pppd []

    Extra parameters for pppd

B.4. Bluetooth settings

Submenu containing all bluetooth related settings.

  1. iWRAP password [buffy]

    The password required to be entered before any commands when discussing with
    iWRAP. Can be empty.
  2. Do not require iWRAP password from local clients [Yes]

    Ask iWRAP password from remote clients only, not from local (127.0.0.1).
  3. Friendly name [W$S_$p]

    The name shown when this device is found when inquired about by other
    Bluetooth devices. Following meta tags are available:
    $S : Hardware serial number, all ten digits
    $s : Hardware serial number, last three digits
    $P : Server port
    $p : Server port, last digit
    $H : Fully Qualified Domain Name (FQDN)
    $h : hostname
    $$ : $
  4. Connectable and discoverable mode [3]

    The setting specifying whether this device is connectable and/or
    discoverable or not by other Bluetooth devices.
    When a device is connectable, other Bluetooth devices can make a Bluetooth
    connection to it. Before making a connection, the calling device must know
    the Bluetooth address of the device it is connecting to. The Bluetooth
    addresses can be found by making an inquiry. When a device is discoverable,
    it shows up in inquiries. Possible values for all combinations of these
    settings are:
    0 : Not connectable, not discoverable
    1 : Not connectable, discoverable
    2 : Connectable, not discoverable
    3 : Connectable and discoverable (default)
  5. Master/slave role switch policy [1]

    The setting specifying how the connecting Bluetooth devices should decide
    their roles. When a device is calling another Bluetooth device, it
    originally is the master and the answering device is the slave. When the
    connection is being built, a role switch can be made. Normally, access point
    devices want to be the master for all their slaves, and therefore they
    require a master-slave switch when a new device is connecting. This is also
    how the Access Server is configured by default. Other possible combinations
    are:
    0 : Allow switch when calling, don't request when answering
    1 : Allow switch when calling, request when answering (default)
    2 : Don't allow switch when calling, request when answering
    If you have problems with connecting to the Access Server, it might be due
    to the fact that your client device does not support a master/slave switch.
    In this case, set this setting to 0.
  6. Default PIN code []

    The PIN code used when establishing connections. Up to 16 characters are
    significant. If there is no default PIN code, the Access Server does not
    require a PIN code when establishing connections. If in this case the other
    device requests a PIN code, the default PIN code 1234 is sent, following the
    Bluetooth specification.
  7. Power save mode and parameters [4]

    The power save mode used by default for all connections.
    0 : Active
    1 : Park: Round-robin
    2 : Park: Idle
    3 : Sniff: All
    4 : Sniff: Idle (default)
  8. Use literal replies in SDP [Yes]

    If enabled, some SDP result codes will have literal values instead of
    numeric values.
  9. Optional command line parameters []

    Additional command line parameters when starting iWRAP.
  10. Edit startup script [/etc/bluetooth.conf]

    Enables editing of the /etc/bluetooth.conf file, which can contain extra
    commands that iWRAP servers process each time they start.

B.4.1. Lan access profile settings

Submenu containing lan access profile settings.

  1. Enable lan access profile [No]

    Whether or not the LAN Access Profile is enabled.
  2. Login name and password []

    The login name and password required from LAN access clients. Must be entered
    as a single string, separated with a space. For example: guest buffy
    If empty (default), no login is required.
  3. Service name (shown in SDP) [Lan Access]

    The name of this service as shown in the Service Discovery.
  4. Defaultroute modification policy [0]

    How the Bluetooth server should modify the defaultroute in routing tables:
    0: Do not alter defaultroute
    1: Set defaultroute according to outgoing PPP
    2: Set defaultroute according to incoming PPP
    3: Set defaultroute according to all PPP calls

B.4.2. Personal area network user profile settings

Submenu containing personal area network user profile settings.

  1. Enable PAN user profile [No]

    Whether or not the PAN User Profile is enabled.
  2. Service name (shown in SDP) [PAN User]

    The name of this service as shown in the Service Discovery.
  3. Enable zeroconf when calling [No]

    Enable ZeroConf protocol for outgoing PANU connections.
  4. Enable zeroconf when answering [No]

    Enable ZeroConf protocol for incoming PANU connections.

B.4.3. Personal area network generic networking profile settings

Submenu containing personal area network generic networking profile
settings.

  1. Enable PAN generic networking profile [Yes]

    Whether or not the PAN Generic Networking Profile is enabled.
  2. Service name (shown in SDP) [Generic Networking]

    The name of this service as shown in the Service Discovery.
  3. Use dynamic network configuration for local IP address [No]

    Whether or not DHCP is used for configuring Local IP Address. Enable only if
    you are connecting this PAN-GN to another PAN-GN that will provide the IP
    configuration.
  4. Local GN interface IP address [192.168.161.1]

    The IP address for the local GN interface.
  5. Local GN interface subnet mask [255.255.255.0]

    The netmask for the local GN interface.
  6. Start DHCP server for remote users [Yes]

    Whether or not this device should start DHCP for remote devices connecting
    to this PAN-GN. Disabled if "Use dynamic network configuration for local IP
    address" is used.
  7. First IP for lease block [192.168.161.2]

    First IP for lease block
  8. Last IP for lease block [192.168.161.254]

    Last IP for lease block
  9. Subnet of lease block [255.255.255.0]

    Subnet of lease block
  10. Lease time [86400]

    Lease time

B.4.4. Personal area network network access point profile settings

Submenu containing personal area network network access point profile
settings.

  1. Enable PAN network access point profile [Yes]

    Whether or not the PAN Network Access Point Profile is enabled.
  2. Service name (shown in SDP) [Network Access]

    The name of this service as shown in the Service Discovery.

B.4.5. Object push and file transfer profile settings

Submenu containing settings for object push and file transfer profiles.

  1. Enable object push profile [Yes]

    Whether or not the Object Push Profile is enabled.
  2. Service name (shown in SDP) [Object Push]

    The name of this service as shown in the Service Discovery.
  3. Enable file transfer profile [Yes]

    Whether or not the File Transfer Profile is enabled.
  4. Service name (shown in SDP) [File Transfer]

    The name of this service as shown in the Service Discovery.

B.4.6. Serial port profile settings

Submenu containing settings for serial port profile. The profile itself
is enabled and disabled by switching "serialport" application "on" or "off"
in the menu Setup -> Applications -> Default bootup applications.

  1. Act as the calling device [No]

    Whether this device should act as the calling device (DevA) or the answering
    device (DevB).
  2. BPS rate [115200]

    The bits-per-second rate of the connection. Possible values are 300, 1200,
    2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, and 460800.
  3. Data bits [8]

    The number of data bits in the connection. Possible values are 5, 6, 7, and
    8.
  4. Parity [0]

    The parity bit setting of the connection. Possible values are:
    0: No Parity (default)
    1: Odd Parity
    2: Even Parity
  5. Stop bits [1]

    The number of stop bits in the connection. Possible values are 1 and 2.
  6. Hardware flow control (RTS/CTS) [Yes]

    Whether or not the hardware flow control is used in the connection.
  7. Software flow control (XON/XOFF) [No]

    Whether or not the software flow control is used in the connection.
  8. Bluetooth address of the remote device [00:07:80:80:bf:01]

    The Bluetooth address of the device to be contacted.
  9. Service channel [2]

    If caller mode: The Bluetooth server channel of the device to be contacted.
    If answer mode: The Bluetooth server channel for incoming connections.
  10. Service name (shown in SDP) [Serial Port]

    The name of this service as shown in the Service Discovery.
  11. Optional command line parameters []

    Optional extra parameters for the Access Server Serial Port Profile
    application. Currently the supported parameters are:
    --device dev     Device if not user port (/dev/ttyS0 for CF Card)
    --msc            Enables transmitting of DCD/DSR status in MSC.
    --nobuffer       Discard data if no Bluetooth connection.

B.5. Applications

Submenu containing various applications.

  1. Default bootup applications []

    Change which applications start at bootup and which don't.

B.5.1. FTP server settings

Submenu containing settings for FTP server application.

  1. Root user password [buffy]

    Password of the "root" user for FTP connections.
    Use "*" to allow everything (aka anonymous user).
  2. Root user directory [/]

    Root directory of the "root" user for FTP connections.
  3. Root user instances [5]

    Maximum number of simultaneous logins of the "root" user for FTP
    connections.
  4. Allow anonymous login [Yes]

    Allow anonymous FTP login or not.
  5. Anonymous user password [*]

    Password of the "anonymous" user for FTP connections.
    Use "*" to allow everything (aka anonymous user).
  6. Anonymous user directory [/tmp/obex]

    Root directory of the "anonymous" user for FTP connections.
  7. Anonymous user instances [5]

    Maximum number of simultaneous logins of the "anonymous" user for FTP
    connections.
  8. Allow anonymous user to do everything [No]

    Allow user to do everything.
  9. Allow anonymous user to download [Yes]

    Allow user to download files.
  10. Allow anonymous user to upload [No]

    Allow user to upload files and make directories.
  11. Allow anonymous user to overwrite [No]

    Allow user to overwrite existing files.
  12. Allow anonymous user to multiple login [No]

    Allow user to multiple logins.
  13. Allow anonymous user to erase [No]

    Allow user to erase files and directories.
  14. Edit configuration file [/etc/ftpd.conf]

    Edit the self documented configuration file of the FTP server.

B.5.2. ObexSender settings

Submenu containing settings for ObexSender application.

  1. Bluetooth friendly name [W$S_$p]

    The name shown when this device is found when inquired about by other
    Bluetooth devices. Following meta tags are available:
    $S : Hardware serial number, all ten digits
    $s : Hardware serial number, last three digits
    $P : Server port
    $p : Server port, last digit
    $H : Fully Qualified Domain Name (FQDN)
    $h : hostname
    $$ : $
  2. Delay between inquiries [10]

    Delay between inquiry.
  3. Delay between multiple files [40]

    Delay between multiple files.
  4. If previous was ok, timeout before sending again [36000]

    Timeout before sending to same device again, if previous was ok.
  5. If previous was failure, timeout before trying again [86400]

    Timeout before sending to same device again, if previous was failure.
  6. Minimum RSSI value before sending [-128]

    RSSI must be above this limit to start automatic sending. Note that this
    number is negative: -128 means all, -30 means "very close to us", and so on.
  7. Logfile name [-]

    Logfile name, IP address of the log server or "-" for syslog.
  8. Log prefix [-]

    Sender's ID to be added to log entries.
  9. If sending was failure, log it too [Yes]

    If sending was failure, log it too.
  10. iWRAP password [-]

    iWRAP password. "-" for none.
  11. Edit configuration file [/etc/obexsender.conf]

    Edit the self documented configuration file of the ObexSender.
  12. Upload a new file [/mnt/mtd]

    Upload a new file to Access Server (usually a jpg or gif file).
  13. List files [/mnt/mtd]

    List files currently saved to Access Server.
  14. View log [-]

    View ObexSender log file in summary or detailed mode.
    

B.5.2.1. Delete log (confirm)

Delete ObexSender log file. Confirmation will be asked.

  1. Delete log now! [/bin/true]

    Delete ObexSender log file immediately!
    WARNING: There is no confirmation for this!
    

B.5.3. SMS gateway settings

Submenu containing settings for SMS gateway application.

  1. Comport device [/dev/ttyS0]

    Comport device for SMS gateway.
    /dev/ttySA1 for user uart
    /dev/ttyS0 for CF card
  2. Log file name [/dev/null]

    The file to which the SMS gateway (smsgw) logs all traffic. Use /dev/null
    for none, /dev/console for console output and, for example,
    /var/log/smsgw.log if you want to save this information. Be careful, however,
    not to fill the RAM file system (use a cron job to free disk space from time
    to time).
  3. SMSC number [+358405202000]

    SMSC number. Contact your local GSM operator if you don't know the correct
    value.
    +358405202000 for Sonera in Finland
    +358508771010 for Elisa in Finland
  4. Parse incoming messages [0]

    What SMS gateway should do to incoming SMS messages:
    0: Save them to disk (use this if don't know what you're doing!)
    1: Parse them internally for keywords
  5. Edit configuration file [/etc/smsgw.conf]

    Edit the self documented configuration file of the SMS gateway.

B.5.4. wpkgd settings

Submenu containing settings for wpkgd application.

  1. wpkgd's autoinstall directory [/tmp/obex]

    wpkgd will automatically check this directory for wpk files containing
    software update packets.
    Use "/tmp/obex" if you want to allow updates via Bluetooth Object Push.
  2. Extra parameters for wpkgd []

    Optional extra command line parameters for wpkgd.
    For example, insert "--auth password" here to require the auth directive
    in wpk files.

B.6. Advanced settings

Submenu containing advanced settings.

  1. User startup script [/etc/rc.d/rc.local]

    This is the last init script executed at system startup.
    By default, the script /etc/rc.d/rc.local just turns off all LEDs to
    indicate the startup has finished. If you want to initialize something
    automatically at every boot, or start up your own applications, for example,
    you should add the required commands to this file.
    Remember to start your programs to run at background
    (example: /usr/local/bin/myapp &) or you cannot get the shell prompt at the
    management console anymore.
  2. Default user profile [/etc/profile]

    Edit the file containing the default user profile settings.
  3. WWW passwords [/etc/httpd.conf]

    Enables editing of the WWW Server configuration file. It consists of lines
    in format "/dir:username:password" which specify the username and password
    required on URLs starting with "/dir". More than one username:password can
    be defined for same "/dir" by adding multiple lines.
  4. Setup access [/etc/setup.conf]

    Enables editing of the setup access configuration file. It consists of lines
    in format "tag +user1 +user2 -user3 -user4" which allows (+) or denies (-)
    access to tag for user. You can find the tags from the HTML source of the
    WWW setup pages or from *.menu files in the /var/lib/setup directory. 
    For example, the tag of this setting is advanced.setupconf 
  5. Edit other configuration files []

    Via this menu you can edit any configuration file. You can for example
    create /etc/crontab file for configuring the cron daemon.
  6. List installed software components [/usr/bin/dpkg -l]

    List currenty installed software components and their version number.
  7. Upload a software update [/tmp/obex]

    Upload a software update file (*.wpk).
  8. Browse files []

    Browse files stored in the Access Server.
  9. Hardware information

    Displaying hardware and software identification information.
  10. Find other Access Servers [/usr/bin/wrapfinder]

    Find other Access Servers.
  11. List running processes [/bin/ps ww]

    List running processes.
  12. Show system log file [/var/log/messages]

    Show system log file.

B.6.1. Reboot (confirm)

Reboot Access Server. Confirmation will be asked.

  1. Reboot now! [/sbin/reboot]

    Reboot Access Server immediately!
    WARNING: There is no confirmation for this!

B.7. Summary of Setup Options

Security settings
    New root password                     []
    iWRAP password                        [buffy]
    Do not require iWRAP password from local clients          [Yes]
    Bluetooth PIN code                    []
    Root user password for FTP            [buffy]
    Allow anonymous FTP login             [Yes]
    WWW passwords                         [/etc/httpd.conf]
Generic settings
    New root password                     []
    Size of the ramdisk in kilobytes      [16384]
    Use local syslog service              [Yes]
    IP address of the remote syslog server          [192.168.42.1]
Network settings
    Hostname of the unit                  [wrap]
    Domain of the unit                    [localdomain]
    Default interface settings
        Use dynamic network configuration           [Yes]
        IP address                        [192.168.42.3]
        Subnet mask                       [255.255.255.0]
        IP address of the default gateway           [192.168.42.254]
        List of name server IPs           [192.168.42.1 192.168.42.2]
    Enable ethernet cable interface       [Yes]
    Ethernet cable settings
        Assign to default interface       [Yes]
        Use dynamic network configuration           [Yes]
        IP address                        [192.168.43.3]
        Subnet mask                       [255.255.255.0]
    Enable WiFi hostap interface          [No]
    WiFi hostap settings
        Use AP master mode                [No]
        Extra commands for AP master mode           [/etc/sysconfig/ifup-wlan0]
        ESSID                             []
        Nickname                          [Bluegiga]
        WEP encryption key                []
        Assign to default interface       [Yes]
        Use dynamic network configuration           [Yes]
        IP address                        [192.168.44.3]
        Subnet mask                       [255.255.255.0]
    Enable WiFi hermes interface          [No]
    WiFi hermes settings
        ESSID                             []
        Nickname                          [Bluegiga]
        WEP encryption key                []
        Assign to default interface       [Yes]
        Use dynamic network configuration           [Yes]
        IP address                        [192.168.45.3]
        Subnet mask                       [255.255.255.0]
    Enable GPRS interface                 [No]
    GPRS settings
        Dial on demand                    [Yes]
        SIM card PIN code                 []
        Username                          [blue]
        Password                          [giga]
        Internet APN                      [internet]
        Extra parameters for pppd         []
    Time server (NTP)                     []
    Time server (rdate)                   []
    Zeroconf interface                    [nap]
Bluetooth settings
    iWRAP password                        [buffy]
    Do not require iWRAP password from local clients          [Yes]
    Friendly name                         [W$S_$p]
    Connectable and discoverable mode     [3]
    Master/slave role switch policy       [1]
    Default PIN code                      []
    Power save mode and parameters        [4]
    Use literal replies in SDP            [Yes]
    Optional command line parameters      []
    Edit startup script                   [/etc/bluetooth.conf]
    Lan access profile settings
        Enable lan access profile         [No]
        Login name and password           []
        Service name (shown in SDP)       [Lan Access]
        Defaultroute modification policy  [0]
    Personal area network user profile settings
        Enable PAN user profile           [No]
        Service name (shown in SDP)       [PAN User]
        Enable zeroconf when calling      [No]
        Enable zeroconf when answering    [No]
    Personal area network generic networking profile settings
        Enable PAN generic networking profile       [Yes]
        Service name (shown in SDP)       [Generic Networking]
        Use dynamic network configuration for local IP address          [No]
        Local GN interface IP address     [192.168.161.1]
        Local GN interface subnet mask    [255.255.255.0]
        Start DHCP server for remote users          [Yes]
        First IP for lease block          [192.168.161.2]
        Last IP for lease block           [192.168.161.254]
        Subnet of lease block             [255.255.255.0]
        Lease time                        [86400]
    Personal area network network access point profile settings
        Enable PAN network access point profile     [Yes]
        Service name (shown in SDP)       [Network Access]
    Object push and file transfer profile settings
        Enable object push profile        [Yes]
        Service name (shown in SDP)       [Object Push]
        Enable file transfer profile      [Yes]
        Service name (shown in SDP)       [File Transfer]
    Serial port profile settings
        Act as the calling device         [No]
        BPS rate                          [115200]
        Data bits                         [8]
        Parity                            [0]
        Stop bits                         [1]
        Hardware flow control (RTS/CTS)   [Yes]
        Software flow control (XON/XOFF)  [No]
        Bluetooth address of the remote device      [00:07:80:80:bf:01]
        Service channel                   [2]
        Service name (shown in SDP)       [Serial Port]
        Optional command line parameters  []
Applications
    Default bootup applications           []
    FTP server settings
        Root user password                [buffy]
        Root user directory               [/]
        Root user instances               [5]
        Allow anonymous login             [Yes]
        Anonymous user password           [*]
        Anonymous user directory          [/tmp/obex]
        Anonymous user instances          [5]
        Allow anonymous user to do everything       [No]
        Allow anonymous user to download  [Yes]
        Allow anonymous user to upload    [No]
        Allow anonymous user to overwrite           [No]
        Allow anonymous user to multiple login      [No]
        Allow anonymous user to erase     [No]
        Edit configuration file           [/etc/ftpd.conf]
    ObexSender settings
        Bluetooth friendly name           [W$S_$p]
        Delay between inquiries           [10]
        Delay between multiple files      [40]
        If previous was ok, timeout before sending again      [36000]
        If previous was failure, timeout before trying again  [86400]
        Minimum RSSI value before sending           [-128]
        Logfile name                      [-]
        Log prefix                        [-]
        If sending was failure, log it too          [Yes]
        iWRAP password                    [-]
        Edit configuration file           [/etc/obexsender.conf]
        Upload a new file                 [/mnt/mtd]
        List files                        [/mnt/mtd]
        View log                          [-]
        Delete log (confirm)
            Delete log now!               [/bin/true]
    SMS gateway settings
        Comport device                    [/dev/ttyS0]
        Log file name                     [/dev/null]
        SMSC number                       [+358405202000]
        Parse incoming messages           [0]
        Edit configuration file           [/etc/smsgw.conf]
    wpkgd settings
        wpkgd's autoinstall directory     [/tmp/obex]
        Extra parameters for wpkgd        []
Advanced settings
    User startup script                   [/etc/rc.d/rc.local]
    Default user profile                  [/etc/profile]
    WWW passwords                         [/etc/httpd.conf]
    Setup access                          [/etc/setup.conf]
    Edit other configuration files        []
    List installed software components    [/usr/bin/dpkg -l]
    Upload a software update              [/tmp/obex]
    Browse files                          []
    Hardware information
    Find other Access Servers             [/usr/bin/wrapfinder]
    List running processes                [/bin/ps ww]
    Show system log file                  [/var/log/messages]
    Reboot (confirm)
        Reboot now!                       [/sbin/reboot]

Appendix C. Software Licenses

In addition to the components that are licensed under Bluegiga's License Agreement (BGT), some software components are licensed under the terms and conditions of one or more open source licenses, listed in Table C-1 below.

Table C-1. Open Source Licenses in Access Server Software Components

License AppreviationDescriptionURL
CMU/UCDCarnegie Mellon University & Regents of the University of California's BSD style license (in net-snmp) 
GPL1GNU General Public License Version 1, February 1989http://www.fsf.org/licenses/ info/GPLv1.html
GPL2GNU General Public License Version 2, June 1991http://www.opensource.org/ licenses/gpl-license.php
LGPL2GNU Library General Public License Version 2, June 1991http://www.gnu.org/copyleft/ lgpl.html
LGPL2.1GNU Lesser General Public License Version 2.1, February 1999http://www.opensource.org/ licenses/lgpl-license.php
BSDRevised BSD License (without the advertising clause)http://www.opensource.org/ licenses/bsd-license.php
BSDorigOriginal BSD License (with the advertising clause)http://www.fsf.org/licenses/ info/BSD_4Clause.html
MITMIT License (only one version exist, also known as X11 style license) 
MPL1.1Mozilla Public License Version 1.1http://www.mozilla.org/MPL/
OpenSSLOpenSSL License (similar to BSDorig)http://www.openssl.org/source/ license.html
SSLeaySSLeay License (similar to BSDorig)http://www.openssl.org/source/ license.html
ZLIBZLIB License (only one version exist)http://www.gzip.org/zlib/ zlib_license.html

The details of the software components and the license (BGT or open source license) under which they are distributed are listed below in Table C-2.

Table C-2. Access Server Software Components and Their Licences

Software ComponentVersionLicenseSource URL
Bootloader
Dock U-Boot loader1.1.0BGTn/a
The low level bootloader. Initializes memories, swithes management console to the user UART if wanted, loads the U-Boot and launches it.
Das U-Boot1.0.0GPL2http://sourceforge.net/projects/u-boot/
The bootloader. Initialized system, holds system configuration, loads and launches the Linux kernel.
Kernel
Linux kernel2.4.21GPL2http://www.kernel.org/
The kernel of the Access Server, responsible for resource allocation, low-level hardware interfaces, security etc.
kernel rmk1 patchesrmk1GPL2http://www.arm.linux.org.uk/
ARM-Linux patches for the Linux kernel.
kernel BlueZ patchesmh8GPL2http://www.bluez.org/
Newest Bluegiga-tested patches for the BlueZ part of the Linux kernel.
kernel MTD patches20040109GPL2http://www.linux-mtd.infradead.org/
Newest Bluegiga-tested patches for the MTD part of the Linux kernel.
kernel BGT patches2.2GPL2delivered upon request
Bluegiga's Access Server hardware-specific modifications for the Linux kernel.
Userland   
bash1.14.7GPL1 & GPL2http://www.gnu.org/software/bash/ bash.html
GNU Project's Bourne Again SHell, interactive shell with Bourne shell syntax.
bridge-utils0.9.6GPL2http://bridge.sourceforge.net/
Linux Ethernet bridging utilities, needed to manage bridging for WRAP Bluetooth PAN profiles and WLAN Access Point functionality.
busybox1.1.1GPL2http://www.busybox.net/
Provides tens of general userland utilities.
e32.6.2GPL2http://www.sax.de/~adlibit/
Small text editor with different keybindings.
hostap-driver0.3.9GPL2http://hostap.epitest.fi/
Linux driver for wireless LAN cards based on Intersil's Prism2/2.5/3 chipset.
hostap-utils0.3.7GPL2http://hostap.epitest.fi/
Utility programs for managing hostap-driver.
iptables1.2.8GPL2http://www.netfilter.org/
Administration tool for the Linux kernel IP packet filter.
libpcap0.7.2BSDhttp://www.tcpdump.org/
Provides portable framework for low-level network monitoring. Needed by tcpdump.
linux-wlan-ng0.2.1pre23MPL1.1 & GPL2http://www.linux-wlan.com/
Linux device driver and subsystem package intending to provide full range of IEEE 802.11 MAC management capabilities for use in user mode utilities and scripts.
lrzsz0.12.20GPL2http://www.ohse.de/uwe/software/ lrzsz.html
Provides X/Y/Zmodem download/upload tools.
netkit-ftp0.17BSDorigftp://ftp.uk.linux.org/pub/linux/ Networking/netkit/
FTP client application.
net-snmp5.2.rc4CMU/USD & BSDhttp://www.net-snmp.org/
Suite of applications used to implement SNMP v1, SNMP v2c and SNMP v3 using both IPv4 and IPv6.
ntpclient2003_194GPL2http://doolittle.faludi.com/ntpclient/
NTP (RFC-1305) client.
openssh4.0p1BSDhttp://www.openssh.com/
OpenSSH suite; server and client utilities.
openvpn2.0.5GPL2http://openvpn.net/
An Open Source VPN daemon.
pcmcia-cs3.2.7MPL1.1 & GPL2http://pcmcia-cs.sourceforge.net/
PCMCIA support package providing a set of loadable kernel modules, client drivers and a card manager daemon.
picocom1.4GPL2http://efault.net/npat/hacks/picocom/
Minimal dumb-terminal emulation program.
ppp2.4.3BSD & BSDorig & GPL2 & ZLIBhttp://ppp.samba.org/
Point-to-Point Protocol userland driver.
strace4.5.3GPL2http://www.liacs.nl/~wichert/strace/
System call trace, i.e. a debugging tool.
stupid-ftpd1.4betaGPL2http://stupid-ftpd.sourceforge.net/
Simple FTP server.
tcpdump3.7.2BSDhttp://www.tcpdump.org/
Utility to monitor network traffic.
wireless_tools27GPL2http://www.hpl.hp.com/personal/ Jean_Tourrilhes/Linux/Tools.html
Package containing utilities to manage Wireless LAN specific parameters.
zeroconf1.5LGPL2.1http://www.zeroconf.org/
Simple IPv4 Link-Local addressing.
userland BGT patches2.2GPL2 & BSD & MPLdelivered upon request
Bluegiga's Access Server hardware-specific modifications for the open source userland programs.
Bluetooth Stack2.2BGTn/a
The WRAP Bluetooth stack core (iWRAP) containing upper HCI, L2CAP, RFCOMM, BNEP and the Service Discovery Protocol. It also provides a command line interface that can be accessed interactively by connecting to the stack using a telnet client or from an application using it as an API by making a socket connection to it.
Bluetooth PAN2.2BGTn/a
WRAP Bluetooth PAN profiles. Includes Bluegiga's BNEP module. Uses open source tools like bridge-utils.
Bluetooth ObjP, FTP2.2BGTn/a
WRAP Bluetooth Object Push and File Transfer Profiles. Includes obexserver userland server.
Bluetooth LAP2.2BGTn/a
WRAP Bluetooth Lan Access Profile. Uses open source components like pppd.
Bluetooth SPP2.2BGTn/a
WRAP Bluetooth Serial Port Profile.
bstool2.2BGTn/a
Utility to read and write firmware parameters of the Bluetooth baseband, used by b2b_classX scripts.
btcli2.2BGTn/a
Utility to send commands to the Bluetooth server.
btproxy2.2BGTn/a
Utility to control several iWRAP servers from a single control connection.
installpoint2.2BGTn/a
WRAP Install Point server provides users service based on a business card or other file sent via Bluetooth. If the packet is a management packet, it is forwarded to the WRAP Remote Management System daemon.
io driver2.2BGTn/a
WRAP device driver kernel module for accessing the digital I/O port.
io library2.2BGTn/a
WRAP I/O library for accessing the Access Server's hardware configuration. Contains also wrapper functions for accessing the led driver.
led driver2.2BGTn/a
WRAP device driver kernel module for accessing the LEDs.
obexget/put2.2BGTn/a
WRAP utility applications for performing OBEX file transfers with remote Bluetooth devices using Object Push and File Transfer Profile.
serialbluetooth2.2BGTn/a
WRAP utility application for forwarding iWRAP to the user serial port.
setup2.2BGTn/a
WRAP utility application for configuring the key system settings.
smsgw2.2BGTn/a
WRAP SMS Gateway server. Enables sending and receiving SMS messages using Compact Flash GSM/GPRS card or GSM/GPRS modem connected to the user serial port.
uartmode2.2BGTn/a
WRAP utility for switching the user serial port between DCE and DTE modes.
watchdog2.2BGTn/a
WRAP Watchdog server -- user level watchdog.
wpkgd2.2BGTn/a
WRAP Remote Management System daemon and package processing utility.
wrapfinder2.2BGTn/a
Finds other Access Servers in the network.
wrapid2.2BGTn/a
WRAP utility application for displaying hardware and software identification information.
Toolchain
binutils2.13.2.1GPL2 & LGPL2http://www.gnu.org/software/binutils/
GNU Binutils, collection of binary tools, like GNU linker and GNU assembler.
gcc2.95.3GPL2 & LGPL2http://gcc.gnu.org/
GNU C/C++ compiler and related tools.
gdb20040120GPL2 & LGPL2http://www.gnu.org/software/gdb/ gdb.html
GNU debugger (gdbserver for remote debugging of Access Server applications).
glibc2.2.5GPL2 & LGPL2.1http://www.gnu.org/software/libc/ libc.html
GNU C Library.
linuxthreads0.9LGPL2http://pauillac.inria.fr/~xleroy/ linuxthreads/
LinuxThreads, a BiCapitalized implementation of the Posix 1003.1c "phtread" interface for Linux.
modutils2.4.26GPL2ftp://ftp.kernel.org/pub/linux/utils/ kernel/modutils/
Utility applications for controlling Linux kernel modules.
ncurses5.3MIThttp://www.gnu.org/software/ ncurses/ncurses.html
Library for displaying and updating text on text-only terminals.
openssl0.9.7iOpenSSL & SSLeayhttp://www.openssl.org/
Toolkit implementing SSL v2/v3, TLS v1 and general purpose cryptography library.
readline4.3GPL2http://cnswww.cns.cwru.edu/php/ chet/readline/rltop.html
GNU Readline library, providing set of functions for use by applications that allow users to edit command lines as they are typed in.
termcap2.0.8GPL2https://www.redhat.com/fedora/
Basic system library needed to access the termcap database.
zlib1.2.1ZLIBhttp://www.gzip.org/zlib/
General purpose compression library.
toolchain BGT patches2.2GPL2delivered upon request
Bluegiga's Access Server specific modifications for the toolchain.

Appendix D. Supported Hardware

Table D-1. Supported Hardware by the Access Server

ConnectorTypeCardNote
CFGPRSAnycom GS-320 Tri-Band GPRS CF CardMultislot class 10.
CFGPRSAudioVox RTM 8000Multislot class 8, "same" HW as Fujitsu.
CFGPRSFujitsu Siemens Connect2Air 3GSMMultislot class 8, "same" HW as Audiovox.
CFGPSPretec CompactGPS™ 
CFWiFiD-Link Air Wireless Network DCF-660WSeen shipping with 1.7.4 firmware (can be access point without upgrade)
CFWiFiLinksys Instant Wireless WCF-12 
CFWiFiSMC Networks WLAN EZ ConnectDoes not support firmware upgrade