Project

General

Profile

Actions

Osmocon » History » Revision 19

« Previous | Revision 19/29 (diff) | Next »
Anonymous, 02/19/2016 10:49 PM
Re-arranged the vertices of the diagram for more clear representation: all "host" apps on one side


PageOutline = {{{osmocon}}} =

{{{osmocon}}} is a console tool for interfacing our baseband firmware on the phone with applications on the host PC.

It is also used to download a firmware or bootloader into the phone over the serial line, which is currently implemented for the [http://bb.osmocom.org/trac/wiki/MotorolaC123 CompalE88 (C118/C120/C121/C123)], the [http://bb.osmocom.org/trac/wiki/MotorolaC155 CompalE99 (C155)].BR

Supported Bootloaders are currently the [wiki:CompalRamloader] and the [wiki:CalypsoRomloader].

After uploading a firmware, it turns into an HDLC mulitplexer/demultiplexer, allowing for multichannel communication with the device.

The phones console is on one such channel and will be redirected to the terminal (stdout) on which osmocom runs.

Several other HDLC channels are accessible by means of the following unix domain sockets: * /tmp/osmocom_l2 for the [wiki:L1A_L23_Interface] as used by [wiki:mobile], [wiki:layer23] and other host programs * /tmp/osmocon_loader for the [wiki:Bootloader]

{{{
#!graphviz
digraph G {
graph [rankdir = LR];
Phone -> SerialPort [ label = "RS232" dir=both ];
SerialPort -> osmocon [ label = "/dev/ttyUSB*" dir=both ];
layer23 -> osmocon [label = "unix socket" dir=both ];
osmoload -> osmocon [label = "unix socket" dir=both ];
firmware -> osmocon [label = "file read" ];
osmocon -> terminal [label = "stdout" ];
osmocon [ shape = doublecircle ];
layer23 [ shape = circle label = "mobile"];
osmoload [ shape = circle]; { rank = same; terminal layer23 osmoload firmware }
}
}}}

General Usage * Connect your phone UART to a serial port of your PC, using a [wiki:Hardware/SerialCable] (3.3V RS232 on 2.5mm headphone jack) * Determine what host program you want to run (see [wiki:Applications]) * Start the console like this, filling in your phone type and binary path: {{{
$ ./osmocon -p /dev/ttyUSB0 -m c123xor ../../target/firmware/board/compal_e88/loader.compalram.bin
}}} * Briefly press the power-on button of your phone (short push, not like a regular phone boot!). Avoid charging the phone while using osmocon, this can inhibit the loader. * Observe output resembling the following {{{
got 2 bytes from modem, data looks like: 2f c8
got 5 bytes from modem, data looks like: 1b f6 02 00 41
got 1 bytes from modem, data looks like: 01
got 1 bytes from modem, data looks like: 40
Received PROMPT1 from phone, responding with CMD
read_file(../../target/firmware/board/compal_e88/loader.compalram.bin): file_size=13404, hdr_len=4, dnload_len=13411
got 1 bytes from modem, data looks like: 1b
got 1 bytes from modem, data looks like: f6
got 1 bytes from modem, data looks like: 02
got 1 bytes from modem, data looks like: 00
got 1 bytes from modem, data looks like: 41
got 1 bytes from modem, data looks like: 02
got 1 bytes from modem, data looks like: 43
Received PROMPT2 from phone, starting download
handle_write(): 1023 bytes (1023/13411)
handle_write(): 768 bytes (1791/13411)
handle_write(): 768 bytes (2559/13411)
handle_write(): 768 bytes (3327/13411)
handle_write(): 768 bytes (4095/13411)
handle_write(): 768 bytes (4863/13411)
handle_write(): 768 bytes (5631/13411)
handle_write(): 768 bytes (6399/13411)
handle_write(): 768 bytes (7167/13411)
handle_write(): 768 bytes (7935/13411)
handle_write(): 768 bytes (8703/13411)
handle_write(): 768 bytes (9471/13411)
handle_write(): 768 bytes (10239/13411)
handle_write(): 768 bytes (11007/13411)
handle_write(): 768 bytes (11775/13411)
handle_write(): 768 bytes (12543/13411)
handle_write(): 768 bytes (13311/13411)
handle_write(): 100 bytes (13411/13411)
handle_write(): finished
got 1 bytes from modem, data looks like: 1b
got 1 bytes from modem, data looks like: f6
got 1 bytes from modem, data looks like: 02
got 1 bytes from modem, data looks like: 00
got 1 bytes from modem, data looks like: 41
got 1 bytes from modem, data looks like: 03
got 1 bytes from modem, data looks like: 42
Received DOWNLOAD ACK from phone, your code is running now!

OSMOCOM Calypso loader (revision f45c5ee-modified) ======================================================================
Running on compal_e88 in environment ramload

}}} * You can now interact with the phone through application programs like [wiki:mobile], [wiki:layer23], [wiki:osmoload], and others, depending on the firmware you loaded.

Command Line Parameters {{{
Usage: ./osmocon [ -v | -h ] [ -d [t][r] ] [ -p /dev/ttyXXXX ]
[ -s /tmp/osmocom_l2 ]
[ -l /tmp/osmocom_loader ]
[ -m {c123,c123xor,c140,c140xor,c155,romload,mtk} ]
[ -c /to-be-chainloaded-file.bin ]
[ -i beacon-interval (mS) ]
file.bin
}}}

=== {{{-v}}} Version ===
Show the version of the program

=== {{{-h}}} Help ===
Get a short help message

=== {{{-d [t][r]}}} Debug flags ===
Enable debug output of transmitted {{{t}}} and/or received {{{r}}} serial data

=== {{{-p /dev/ttyXXXX}}} Serial Device ===
Specify the Serial Port to which your phone is connected, e.g. /dev/ttyUSB0 for the first USB-Serial converter in your system

=== {{{-s /path/to/socket}}} Path of L1CTL socket ===
Specify the file system path for the unix domain socket to be used for L1CTL

=== {{{-l /path/to/socket}}} Path to Loader socket ===
Specify the file system path for the unix domain socket to be used for interaction with [wiki:osmoload]

=== {{{-i time}}} beacon interval, in milliseconds ===
Specify the beacon interval. On some devices default value should be adjusted in order for loading to work (for example Neo Freerunner works wit -i 13)

=== {{{-m {c123,c123xor,c140,c140xor,c155,romload,mtk} }}} Download protocol mode ===
Select the protocol to be used for interaction with the phone: * {{{c123}}} use the variant implemented by C118/C121/C123 * {{{c123xor}}} use the variant implemented by C118/C121/C123 including XOR checksum * {{{c140}}} use the variant implemented by C139/C140 * {{{c140xor}}} use the variant implemented by C139/C140 including XOR checksum * {{{c155}}} use the variant implemented by C155 * {{{romlaod}}} use the variant implemented by the Ti Calypso rom-loader (aka {{{fluid}}}) * {{{mtk}}} use the protocol used by Mediatek DBB

Known Problems

In some situations (like, apparently, using FTDI serial cables), you might need the {{{-m c123}}} mode for your [wiki:MotorolaC123] instead of the normal {{{-m c123xor}}}.

Files (0)

Updated by about 8 years ago · 19 revisions

Add picture from clipboard (Maximum size: 48.8 MB)