NAME¶
scmxx - exchange data with your Siemens mobile phone
SYNOPSIS¶
scmxx [
--device device] [
--baud baudrate]
[
--quiet] [
--verbose] [
--reset] {
--info |
--set-time |
--mem-info |
--lock-info |
--lock
lock {
--enable |
--disable} |
--set-smsc
--number {
number |
name} }
scmxx [
--device device] [
--baud baudrate]
[
--quiet] [
--verbose] [
--reset] [
--out
file] [
--pipe pipe] {
--remove |
--send |
--get} [
--binary] [
--mem memory] [
--slot
slot] [
file...]
scmxx [
--device device] [
--baud baudrate]
[
--quiet] [
--verbose] [
--reset] [
--out
file] [
--pipe pipe] [
--pin PIN]
{
--remove |
--send |
--get} [
--pbook]
[
--mem memory] [
--slot slot] [
--text
text] [
--number {
number |
name} ] [
file...]
scmxx [
--device device] [
--baud baudrate]
[
--quiet] [
--verbose] [
--reset] [
--out
file] [
--pipe pipe] {
--remove |
--send |
--get} [
--sms] [
--mem memory] [
--slot
slot] [
--text text] [
--number {
number |
name} ] [
--direct] [
--flash] [
--srr]
[
--unicode] [
file...]
scmxx [
--help] [
--version]
DESCRIPTION¶
SCMxx can copy files to and from a Siemens mobile phone and also delete stored
files. Files can read from a given file or through stdin and stored to a given
file or stdout. SMS can also be directly sent or received without storing in
the mobile phone. SCMxx was tested with several mobile phones manufactured by
Siemens (only S25 and later).
OPTIONS¶
- --device (-d)
- specify another than the compiled in device. This
overwrites the SCMXX_TTY environment variable and the compiled-in value.
For linux systems, this may be e.g. /dev/ttyS0 for serial connections,
/dev/ircomm0 for infrared connections and /dev/rfcomm0 for bluetooth
connections. If native bluetooth support is compiled in, you can also use
the format bt://[xx:xx:xx:xx:xx:xx]:n or bluetooth://[xx:xx:xx:xx:xx:xx]:n
to specify a bluetooth address xx:xx:xx:xx:xx:xx and the bluetooth channel
n (default is 1). The channel is optional, omit the colon in this case,
too.
- --baud (-b)
- specify the device's speed. Valid values are dependent on
the system but may be 9600, 19200, 38400, 57600 or 115200. The default
value is 19200. The S25 and *35i only work at the 19200, all later phones
also work at full serial speed. Infrared connections may be an exception
to these rules (dependent on the infrared donle). This overwrites the
SCMXX_BAUD environment variable and the compiled-in value.
- --out (-o)
- specify a file to use. When getting binary files with
"all", the slot number, a dot and the filetype are appended.
When sending or deleting, this parameter has no use but the last
parameters that should be valid files. Stdout must be explicitly selected
with the dash ("-"), by default nothing is written to stdout.
There is nothing appended to "-" when getting multiple
files.
- --pipe (-p)
- specify a pipe to another program. When getting with
"all", every file is piped to this programs on its own (only for
--binary and --sms).
- --quiet (-q)
- decreases verbosity by 1
- --pin
- use this option if a PIN code is required for access
- --verbose (-v)
- increases verbosity by 1
- --reset
- try to reset the phone, so it gets accessible again. It may
happen that the phone does not answer on the serial interface anymore,
especially with a previous user-interrupted file transfer. This simply
blindly sends some special characters.
- --help (-h)
- print the help message
- --version
- print the version number
- --remove (-r)
- removes an entry from the phone. When specified with --sms
and --get, this will get'n'delete. When specified with --sms and --send,
this will send'n'delete.
- --get (-g)
- get an entry and save it to a file. When specified with
--sms and --remove, this will get'n'delete. When specified with --sms and
--send, this will get'n'send.
- --send (-s)
- sends a file to the phone. When sending sms, you might want
to take a look at the option --direct, too. When specified with --sms and
--remove, this will send'n'delete. When specified with --sms and --get,
this will get'n'send.
- --info (-i)
- collect information from the phone, --mem-info can be used
as a trigger to display a more complex listing of the available
memories
- --mem-info
- display information about available memories and their
slots and other information. It uses the same format as --mem=? (see
below) and can also be use as a trigger for --info to replace the short
memory listing.
- --lock-info
- display status of locks. It can also be use as a trigger
for --info to replace the lock name listing.
- --lock
- specify a lock that you can enable or disable. For some
locks, a password is needed (see --pin)
- --enable
- enable e.g. a lock
- --disable
- disable e.g. a lock
- --dial
- dial a number (requires --number). The program returns
either after 10 seconds or when the call reached the other side.
- --hangup
- hangup all currently active calls
- --set-time
- synchronize time to phone. The use of tools like ntpdate is
recommended before using this.
- --set-smsc
- set the SMSC number (requires --number)
- --binary (-N)
- select binary file transfer mode
- --pbook (-P)
- select phonebook transfer mode
- --sms (-S)
- select short message service mode
- --mem
- select a memory to access. Slot numbers may vary depending
on the selected memory. See the output of --info for the supported memory
types. Not using this option triggers the default behaviour (if a default
behaviour was defined). There is a special string "?" that
outputs in the same format as --mem-info but only for the selected
mode.
- --slot
- select a slot to access. See the output of --mem-info or
--mem=?. Not using this option triggers the default behaviour (if a
default behaviour was defined). The special string "all" defines
the whole range of available slots for the selected memory and mode and,
except with --sms, cannot be used with --send. For SMS, there are four
additional special strings: "read", "unread",
"sent" and "unsent". The latter two can be used with
--send. For phonebook access, there is the additional special string
"last". When this option is omitted with --send, scmxx tries to
find an empty slot (that may or may not take long). Finding an empty slot
is not supported for phonebooks, yet. When a slot was specified and also
multiple files to upload, the specified slot is the starting point to
search for empty slots. Overwriting multiple, non-empty slots is not
supported, yet, except for the special case "all".
- --text (-t)
- specify content text of short message or text of the
phonebook entry. For phonebook entries, the length limit may depend on the
selected phonebook (see output of --mem-info or --mem=?).
- --number (-n)
- specify number to send the short message to or the number
for the phonebook entry. Note that the number may have a leading '+' for
international numbers. It is normally limited to 20 digits (without the
'+') which is certainly enough.
- --direct
- send/get short messages without storing in the phone. This
is not default because you will certainly be charged for it when sending.
With direct getting, SMS that are not of type DELIVER are still stored on
the phone (scmxx cannot decode those messages, yet).
- --unicode
- send the short message and use UCS-2 (16bit unicode) as
character set. You do not need to specify this parameter to enable unicode
sms decoding.
- --flash
- set the class0 in the data coding scheme field that is
normally interpreted as "immediate display". Not all receiving
entities support this. Note that a second sms of this type normally
overwrites a previous one without asking! Its use is not recommended.
- --srr
- this sets the StatusReportRequest bit in the pdutype field
of the sms pdu. It depends on the SMSC if this is honored. With some
providers, this produces additional costs!
- --sort
- sort the messages on printing to chosen output. Possible
sorting methods are "type", "slot" and
"type,slot". "type" sorts for the type of the short
message with an internal order of unsupported types first, then
SMS-SUBMIT, SMS-STATUS-REPORT and SMS-DELIVER. "slot" sorts for
the slot of the short message. "type,slot" does sorting like
"type" first and sorts each type like "slot". Default
is to not sort at all (order depends on phone).
- --pin
- enable pin usage. Use this only if there was an error
message that asks for a PIN or PUK. For a PIN, this is the corresponding
"<PIN>", for a PUK, it is "<PUK>,<new
PIN>". The value is only used once. Consider using the pin file
(see below) instead of this option.
- --system-charset
- define the system character set instead of using the return
value from nl_langinfo(CODESET). This is to work around systems that do
not support unicode locales like UTF-8 or when data from a different
system with a different locale is used as input. Usually, you do not need
this option.
EXAMPLES¶
- Send an bitmap file to the phone as bitmap (logo):
- scmxx --send --binary
--mem="bmp" --slot=0 myfile.bmp
- Get a Bitmap from the phone and save it into a new
file:
- scmxx --get --binary
--mem="bmp" --slot=0 --out=myfile.bmp
- Get all unread (default on get) short messages and output
to stdout:
- scmxx --get --sms --slot=unread
--out=-
scmxx -gS -o-
- Send a short message directly (not stored in the
phone):
- scmxx --send --sms --direct
--number=123 --text="test"
- Get a phonebook and store it to a file:
- scmxx --get --pbook --mem=SM
--out=SM.pb
- Modify a specific slot (33) in phonebook memory SM:
- scmxx -sP --mem=SM --slot=33
--number=123 --text="test"
NOTES¶
The output of text (phonebook and sms) depends on the character set of your
current locale. Input is the same. This has the advantage of localization but
may have the drawback that all other characters must be entered by a sequence
\XXXX where X is a hex character (e.g. \20ac for EuroSign). This is a 16bit
representative of the unicode value. The \XXXX is only used for output with
the intention to read it again at a later time. For normal output, characters
that cannot be displayed in the current local are replaced by a '?'. Using an
UTF-8 based locale will make sure that all character can be converted. The
newline character can be entered using the common \n and '\' must be masked
with itself. In bash, this might even result in a needed input like
"\\\\".
CONNECTION PROBLEMS¶
There are additional parameters --ignore-serial-bits (default) and
--keep-serial-bits. Use it only when you get no response from the phone at
all. Which setting is needed depends on the cable and serial port and cannot
be determined automatically.
If you experience timeouts on the first command, try the
--start-delay=<seconds> parameter.
Another parameter --device-timeout=<seconds> is provided for the case that
your phone ever needs more than default value of 10 seconds to answer.
Actually, this should be more than enough but one never knows. The minimum
value is 1, values higher than 25 mean "forever".
SECURITY¶
The --pin option should be used with care. The option and its argument are
visible in the process list.
ENVIRONMENT¶
- SCMXX_TTY
- see --device for decription
- SCMXX_BAUD
- see --baud for description
FILES¶
- ~/.scmxx/cache.pb
- this file serves as lookup file during short message output
(for recipient/sender address) and for number aliasing for --number on
sending a short message. The format is the same as a phonebook file (slot
numbers don't matter but must be present).
- ~/.scmxx/config
- this file can contain long options (without the --), the
arguments is seperated from the option name by an '='. Any amount of
spaces at beginning of line, before and after the seperator are allowed. A
'#' at beginning of line marks this line as comment. Examples:
#choose a device to access
device = /dev/ttyS0
#always send SMS using UCS-2
unicode
- ~/.scmxx/pin
- This file is used as an alternativ to the --pin command
line option. The file MUST NOT be group readable/writeable or world
readable/writeable! It also MUST be a regular file, not a symlink. SCMxx
refuses to use the file if this is not the case. If a PUK value is
requested by the phone, the corresponding PIN must also be defined. The
only necessary format elements are '{', '=', ';' and '}'. Spaces and
newlines are ignored. The file has the following format:
sim 262031234567890 {
pin = 1234
puk = 12345678;
pin2 = 4321;
puk2 = 87654321;
}
device 350123456789012 {
type SIM {
pin = 0000;
puk = 0000;
}
}
"sim" sections use the IMSI as identifier, "device"
sections use the IMEI as identifier (see output of --info). Since the IMSI
is needed, you canNOT switch the phone on with this! The "type"
sub section in the device section has the following idenfifiers:
- SIM
- device code (theft protection)
- FSIM
- very first inserted SIM
- NET
- network personalization
- NETSUB
- network subset personalization
- SP
- service provider personalization
- CORP
- corporate personalization
AUTHOR¶
Hendrik Sattler post@hendrik-sattler.de