stefanha edited this page Sep 13, 2010 · 18 revisions
Clone this wiki locally

Welcome to inq1linux, INQ1 mobile phone utilities for Linux. This project aims to provide Linux software for communicating with and expanding the INQ1 mobile phone.

Currently only the USB modem functionality is supported. Contacts and calendar sync may be added in the future.

To get help, join the ##inq1linux IRC channel on chat.freenode.net. Try a browser-based IRC client if you have none installed.

Written by Stefan Hajnoczi (stefanha@gmail.com). Questions or comments welcome.

This software is open source and licensed under the MIT license.


Development and early testing. This software is suitable for developers and adventurous users.

You can connect your phone via USB to use it as a modem. Connection speeds depend on signal strength and achieving broadband speeds is possible.


inq1linux 0.2 (28 Feb 2009) – Most manual steps now automated, see new instructions below.


This section explains how to set up inq1linux.


You will need libusb and ppp. You also need make and gcc for compiling.

Compile the software

Make sure you have the libusb headers installed. The package is commonly named libusb-dev or libusb-devel.

Download and untar the inq1linux source tarball.


cd inq1linux


You should find that src/ now contains sendscsi, startmodem, and usbserial binaries.

Install pppd scripts

Please run as root from here onwards to avoid file permission problems. If you understand UNIX permissions you may wish to set things up appropriately so you do not need root.

Copy scripts from inq1linux/pppd-scripts/inq1* to /etc/ppp/peers and ensure they are executable:

install pppd-scripts/* /etc/ppp/peers

Post-install check

Check that /proc/bus/usb/devices is accessible. Some distros do not have /proc/bus/usb mounted by default. If the file does not exist you need to mount /proc/bus/usb:

mount -t usbfs none /proc/bus/usb

This mount will not persist across reboot. Add the following line to /etc/fstab to make it persist:

none /proc/bus/usb usbfs auto 0 0


This section describes how to establish an internet connection via your phone.

Connect the phone to a computer via USB

Close the phone dialog asking whether to do a Memory Card transfer or PC Sync by pressing “Back”. This leaves the phone ready to use as a USB modem.

Note that phone apps accessing the internet can cause the modem to report “BUSY”. If you experience this, simply reboot your phone before connecting via USB.

Start inq1linux

Run ./inq1linux to establish an internet connection via your phone. The inq1linux script is in src/ along with the sendscsi, startmodem, and usbserial binaries it uses.

You should see a PPP connection being established and modem output.

Note that things should always work if you have no other network interfaces running (WiFi or LAN). If you have network interfaces running and experience trouble, please try stopping all other network interfaces before running inq1linux.

Manual usage instructions

These instructions describe how to establish an internet connection via your phone without using the inq1linux script. Only try this if you are having problems with the script.

Run sendscsi

After connecting the USB cable, check dmesg to find out which scsi-generic device has been added. Look for output similar to this:

[32975.581773] sr 4:0:0:0: Attached scsi generic sg2 type 5

Run ./sendscsi /dev/sgX where sgX would be your scsi-generic device.

Run startmodem

If you watch /proc/bus/usb/devices you should see the 1614:0809 USB device disconnect and replace itself with the 1614:0408 device. This means the USB modem interface has been exposed. Run ./startmodem to prepare the USB modem interface.

Run usbserial

The usbserial program is the USB modem driver. Run ./usbserial modem and note the device path it prints, e.g. /dev/pts/1.

Note that usbserial also lets you connect to the other serial interfaces on the phone (diag, nmea, and pcsync). Feel free to experiment but be careful :).

Run pppd

Run pppd call inq1 /dev/pts/1, where /dev/pts/1 is the device path printed by usbserial, with other network interfaces down (i.e. WiFi or LAN). If things go smoothly you will see a ppp network interface being created and output from the ppp protocol.