--------------------------.
home|
--------------------------.
projects:|
--------------------------.
 dynfw|
--------------------------.
 davfs|
--------------------------.
documents:|
--------------------------.
 quick .htaccess howto|
--------------------------.
 motorola A1000 on linux|
--------------------------.
photo:|
--------------------------.
 Snow Trekking 31.01.2010|
--------------------------'
----------------------------------------------------------------------------------.
arturp web site - motorola A1000 on linux|
----------------------------------------------------------------------------------'
Here is a quick guide on how to setup bluetooth mrouter networking for Motorola A1000 smart phone through a Debian Linux machine. Setting up mrouter, allows you to share your Linux machine's Internet connection with your phone - so you do not need to use GPRS to browse the web.

Those instructions should work with small modifications for any other phone which uses mrouter (like Motorola 92x), and with other Linux distributions.

If you see any omissions, errors, or have any other feedback, feel free to contact me via email: arturp (-=at=-) plukwa.net


Table of contents
1. Requirements
2. How to make it working?
3. How to access A1000's disks from Linux?
4. How to copy files to A1000 using OBEX push?
5. Useful links

1. Requirements
First of all, you need bluetooth modules for your bluetooth hardware compiled and loaded to the kernel. In my case it is:
bluetooth
rfcomm
bnep
l2cap
sco

Then, you need to have the following Debian packages installed and configured:
bluez-utils
bluez-pin
dnsmasq    (or any other DNS server)
ipmasq     (for ip nat, to make your phone connect to other hosts)
p3nfs      (if you want to mount A1000's disks as file system on Linux)
ussp-push  (if you want to beam files to A1000 with bluetooth's OBEX push)

2. How to make it working?
Setting it up requires that first of all, both devices (your Linux machine and phone) will be paired with the same pin. For this, enter pin of your choice into /etc/bluetooth/pin file. If phone asks you to enter the pin, when connecting, type the same pin you put into that file. Next step is to setup bluetooth's serial port on Linux. Here is relevant config from my machine:

/etc/bluetooth/hcid.conf
# HCId options
options {
        # Automatically initialize new devices
        autoinit yes;

        # Security Manager mode
        #   none - Security manager disabled
        #   auto - Use local PIN for incoming connections
        #   user - Always ask user for a PIN
        #
        security auto;

        # Pairing mode
        #   none  - Pairing disabled
        #   multi - Allow pairing with already paired devices
        #   once  - Pair once and deny successive attempts
        pairing multi;

        # PIN helper
        pin_helper /usr/bin/bluez-pin;

        # D-Bus PIN helper
        #dbus_pin_helper;
}

Having this configured, we need to start Serial Port service on our bluetooth device:
sdptool add SP

And then we need to start pppd over this serial port, assigning 169.254.1.1 IP for your phone, and 169.254.1.68 on the Linux side.

In addition, mrouter requires "wsockhost.mrouter" host name to be resolvable via DNS, it should point to the IP address that will be assigned for Linux side of pppd connection (169.254.1.68). Any DNS server will do; you can use dnsmasq, then all you need to do is to put the following line into the file:

/ets/hosts
169.254.1.68    wsockhost.mrouter

When the DNS entry is resolvable, you can start pppd connection with the following command:
/usr/bin/dund --listen --channel 1 --msdun noauth 169.254.1.68:169.254.1.1 460800 ms-dns 169.254.1.68 lock --persist

Now, simply launch "Desktop Suite" application on your A1000 (do not forget to first configure it to connect with bluetooth, you can do it in Control Panel), click "Connect" and enjoy! If all goes well, you should have mrouter connection ready, and you can use web browser, ssh client, and any other application that requires Internet connection on your A1000.


3. How to access A1000's disks from Linux?
If you want to access your phone's disks, you can use p3nfs (available as package in Debian) to mount them as file system. To do that, first you need to install p3nfsd on A1000. You can get it from this web page, download current UIQ version. You need to copy this application to your phone, to have it installed - you can do it by using OBEX push, as explained in the point 4.

When nfsapp is installed on A1000, in Linux shell, execute the following command, to mount under /mnt/psion/:
p3nfsd -UIQ -tcp -dir /mnt/psion/

Then start nfsapp on A1000, and switch to listen to TCP/IP connections (press 'p' 3 times). You should see confirmation that connection has been established, on both Linux and A1000. Then, you can simply browse A1000's disks under /mnt/psion/ directory, you can copy files to and from it, etc. To unmount and disconnect, simply do:
ls /mnt/psion/exit

4. How to copy files to A1000 using OBEX push?
You can copy files to your A1000, using OBEX push protocol. For this, you need to download and compile ussp-push application (Debian users can install it from ussp-push package).

The next step, is to configure RFCOMM. First of all, we need to find out which RFCOMM channel is used for OBEX push connections in your A1000. It should be channel 3, but if in doubt, you can check that with the following commands (make sure that bluetooth is started on A1000):
# sdptool browse | grep -C5 "0x1105"
Service Name: OBEX Object Push
Service Description: OBEX Object Push
Service Provider: Motorola
Service RecHandle: 0x10001
Service Class ID List:
  "OBEX Object Push" (0x1105)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 3
  "OBEX" (0x0008)
Profile Descriptor List:
  "OBEX Object Push" (0x1105)
    Version: 0x0100

Service Name: Dialup Networking
Service Description: Dialup Networking
Service Provider: Motorola

Simply identify in the sdptool browse output, section for "OBEX push", and note the channel it is running on (above it is 3). Then configure RFCOMM for that channel:

/etc/bluetooth/rfcomm.conf
rfcomm1 {
        bind yes;
        # Bluetooth address of A1000 device
        device 00:11:22:33:44:55;
        # RFCOMM channel for the connection
        channel 3;
        # Description of the connection
        comment "A1000 OBEX push connection";
}

If you do not know your A1000's bluetooth address, you can scan for it with hcitool:
# hcitool scan
Scanning ...
        00:11:22:33:44:55       Motorola A1000

Restart bluez-utils if necessary (Debian users: /etc/init.d/bluez-utils restart), and you should be able to push files onto A1000 with ussp-push:
ussp-push /dev/rfcomm1 LOCAL_FILE_NAME FILE_NAME_ON_A1000

Where LOCAL_FILE_NAME should be path to the local file you want to transfer over bluetooth, and FILE_NAME_ON_A1000 is how file will be named on your phone. Phone should prompt you to accept or reject beamed file. After accepting, you will find it in Messaging application, under "Beamed" account. Simply select what you've beamed, and save it to disk. If what you have beamed, is an application, you can then install it from Launcher (select from menu: "Launcher -> Install").


5. Useful links
Here are some links links you may find useful - based on informations from some of them, I've learnt how to setup mrouter connections on Linux for my Motorola A1000.

Motorola A920 under GNU/Linux
Motorola A920/A925/A1000 Linux Bluetooth HOWTO
Connecting your 6600 to the Internet via Bluetooth and PPP under Linux
P800 and Linux
Sony Ericsson P800 and Linux
Motorola Forum - very good polish forum about Motorola's Symbian UIQ phones (A92X, A1000)
ussp-push - OBEX pusher for Linux

Have fun!

-------------------------------------------------------------------------------------------------------------.
©2021 Artur Pietruk