sakis3g.conf(5)

NAME
sakis3g.conf - Configuration file of Sakis3G script

DESCRIPTION

Every time Sakis3G script is started, configuration is determined by running a specific sequence. If more than one of the eligible configuration file(s) exist, they are processed in the order they appear below:

   1. ~/.3gpin
   2. Command line arguments
   3. /etc/default/3gpin
   4. /etc/sysconfig/3gpin
   5. /etc/3gpin
   6. /etc/default/sakis3g.3gpin
   7. /etc/sysconfig/sakis3g.3gpin
   8. /etc/sakis3g.3gpin
   9. /etc/default/sakis3g
   10. /etc/sysconfig/sakis3g
   11. /etc/sakis3g.conf

This means that /etc/sakis3g.conf overrides anything

CONFIGURATION TYPES

There are two types of configuration options for Sakis3G script:

Switches
    Switches alter behavior of script, enabling or disabling functionality. It is usually provided only one switch per functionality: the one that alters default operation. As an example, storage switch is a synonym for nostorage switch. There is not such thing as yesstorage since default functionality anyway respects storage personality of a USB device.

Variables
    Variables provide an other than default value to internal variables of Sakis3G script, or provide a shortcut mechanism to avoid answering the same question again and again. As an example, providing SIM_PIN="1234" makes sure that script will never ask you again for the PIN number of your SIM card (and will effectively block any other SIM card requiring PIN number, that might get connected to your computer).

    Both configuration types can either be supplied on command line, or be placed within configuration files. It is not possible to define an actor within a configuration file.

    If a variable exists in both the command line and a configuration file, value from configuration file will be used. A variable defined on command line can be unset, within a configuration file, by being assigned an empty value (e.g. SIM_PIN=""). On the other hand, if a switch exists in command line, there is no way it can be unset within a configuration file and vice versa.

    If a variable exists more than once in command line, right-most assignment is taken into consideration. As an example, command:

    sakis3g SIM_PIN=1234 SIM_PIN=1111

will be executed using "1111" as PIN number.

Keep in mind that:

*   Sakis3G script will never generate or modify any configuration file. You need to create/edit configuration file(s) by yourself.

*   Lines starting with '#' and empty lines are ignored.

*   Variable values and switches specified within configuration file(s) cannot be overridden/purged from command line. You should therefore be cautious on what you place inside configuration file(s).

*   Variable values and switches, specified within configuration file(s), should appear only one per line. Example:

     --nostorage
     MODEM="19d2:0031 1bbb:0000 1bbb:f000 19d2:2000"

SWITCHES

Switches are supposed to be not prefixed, or prefixed with a single or with double minus.

     [-][-]<switch name|switch synonym>

Following our previous switch example, all:

    * --nostorage,
    * --storage,
    * -nostorage,
    * -storage,
    * nostorage,
    * storage

have the exact same effect. Most switches also offer synonyms like our nostorage example.

*   Synonyms are only provided for aesthetic and backwards compatibility purposes.

*   Since a synonym's functionality may change in the future, you should generally avoid using synonyms.

*   Synonym are not listed below. Please consult documentation to discover available synonyms.

-b, --balloons
    This switch instructs Sakis3G script to:

*   display balloon notifications, using notify-send utility, when an action is complete.

*   display balloon notifications, using zenity, when events occur and script is running as helper.

    Notes:

*   This switch is disabled when using a text mode UI.

*   Action completion notifications are disabled when --osd switch is set.

*   Some systems fail to present notifications when notify-send is called by root, displaying following text:

    libnotify-Message: Unable to get session bus: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.

-c, --console
    This switch instructs Sakis3G script not to take into consideration any active X displays and instead remain in (virtual) terminal from which it was invoked.

Note:
    If you need an interactive text mode UI to be used, then use of this switch requires you to also set:

*   --interactive switch, or

*   explicitly set an interactive text mode UI through SGUI variable or corresponding switches.

-d, --debug
    This switch enables debug mode.

*   This is the first step one should make when troubleshooting.

*   When Sakis3G script operates in debug mode a huge amount of debug information is sent to standard error.

*   Providing debug output when seeking support is essential.

    To grab debug information use following syntax:

    sakis3g connect --debug 2> /home/sakis/sakis3g.log

Note:
    Use of this switch significantly reduces performance. Make sure it is not set when not required.

-f, --nofix
    Whenever a data connection is initiated, and before informing you about connection being established, Sakis3G script performs the following two actions:

1.  Forces default gateway to be the P-t-P peer provided by newly created interface.

2.  If DNS servers, provided by operator, are 10.11.12.13 and 10.11.12.14, sets Google DNS servers instead.

    These actions take care that newly initiated P-t-P connection is properly setup.

    This switch allows you to prevent these actions from taking place. This can be useful:

*   if you do not want all traffic to pass through "expensive" WAN connection and only direct specific traffic through mobile internet, or

*   if you anyway set appropriate DNS servers using another method/interface/IP.

Notes:

*   Action which might be specified by CONNECTION_HOOK variable is still performed when this switch is set.

*   This switch disables --googledns switch and DNS variable.

-G, --guruplug
    Instructs script to attempt and utilize leds, found on GuruPlug devices, for indicating progress, errors and success. Using this switch while not running on a GuruPlug device has no effect.

Notes:

*   This switch is affected by --noverbose, --noerrors, --nonotify and --quiet switches.

*   Sakis3G script will restore leds, on the state they had been before invoking it, upon exit.

*   Errors are denoted by both leds blinking red for 5 seconds.

*   Success is denoted by both leds blinking green for 5 seconds.

*   Progress is indicated by both leds being green, while they swap blinking each time progress is advanced. If a step is persisted (e.g. when waiting for modem to register a network), blinking led goes red.

-g, --googledns
    Setting this switch instructs Sakis3G script to set Google DNS servers immediately after connection with operator is established, regardless of name servers suggested by operator.

Notes:

*   This switch is equivalent to:

    DNS="8.8.8.8 8.8.4.4"

*   This switch is disabled when --nofix switch is set.

-h, --nohal
    This switch instructs Sakis3G script not to contact HAL.

    Sakis3G script interacts with HAL (if hald is installed) in two occasions:

1.  Before switching modem in order to exclusively lock interface org.freedesktop.Hal.Device.Storage and avoid HAL messing with USB device while Sakis3G script does not expect it.

1.  Immediately after modem has been PIN unlocked and registered to network (and before setting APN and connecting) in order to inform HAL that a modem exists.

Notes:

*   This switch is automatically set when one or more of the following utilities are not found within path:

*   hal-device

*   hal-find-by-property

*   hal-get-property

*   hal-lock

*   hal-set-property

*   This switch also implies --nohalinform switch.

-i, --interactive
    This switch informs Sakis3G script that it can utilize its interactive mode and not abort when user interference is required. This means:

*   It can ask user to perform selections when required,

*   It can prompt user to provide values when required,

*   User can provide root password if required.

    Script takes this information into consideration when deciding which UI to use.

Notes:

*   Explicitly setting a UI (by using SGUI variable or respective switches) which requires --interactive switch being set, results into interactive mode anyway being set.

*   When interactive mode is not enabled, and not implied, Sakis3G script will abort whenever user interference is required.

*   When:

*   DISPLAY environment variable points to a valid local X session display, and

*   access is granted for that display, and

*   tools required for using at least one Graphical UI are available, then

    this switch is set unconditionally. In other words, an X display implies interactive mode availability. If you need to prevent this assumption (however, this will prevent you from using any Graphical UI):

*   consider using --console switch, or

*   unset DISPLAY environment variable before invoking Sakis3G script:

    unset DISPLAY; sakis3g

-k, --nostorage
    Some USB modems provide a storage interface even after being mode switched. This is essentially true for devices offering an SD/microSD/MMC slot. This triggers numerous procedures being initiated for setting up those block device(s) exported by storage interface. Depending on kernel version and system setup:

*   Setting up those volume(s) may take several seconds.

*   Especially if your system intends to automatically mount exported volume(s).

*   Setting up those volume(s), may render modem unusable.

*   Accessing those volume(s) (even after data connection is established) may still render modem unusable.

*   Setting up modem-part and storage-part simultaneously may render one or both parts unusable.

    Sakis3G script takes all measures required for preventing any simultaneous modem and storage operations, leading to an, as much as possible, stable environment:

1.  Locks HAL before switching device.

2.  Switches device.

3.  Checks if usb_storage got bound to storage interface.

*   If it is bound:

*   Unlocks HAL and checks if HAL spawned a polling process.

*   If a polling process was spawned:

*   Awaits for spawned process to finish mounting volumes.

*   If it is not bound:

*   Unlocks HAL.

4.  Then proceeds into setting up modem-part.

    Doing all these may take several seconds (even up to 30 seconds). Even then, things can still be destroyed by another silly process messing with modem or volume(s). This switch instructs Sakis3G script to safely unbind usb_storage module from storage interface (if possible). Chances of storage-part operations interfering with modem-part operations are then highly reduced.

Notes:

*   Using this switch renders USB modem's SD/microSD/MMC card slot unusable.

*   Using this switch simultaneously with --nohal switch, may get you into various troubles:

*   Your system and/or file manager may complain about volume disappearing.

*   Your system may recover by re-binding usb_storage module to storage interface.

*   Still Sakis3G script will be considering it did its job into eliminating storage part and will proceed.

*   Simultaneous access/setup operations to modem and storage parts will be taking place, leading into one or both parts being unusable.

-l, --nohalinform
    Whenever Sakis3G script has finished setting up your modem, it updates serial node's HAL entry so that your system is aware of the newly attached modem. Using this switch you can disable this functionality.

Notes:

*   Disabling this functionality may be helpful if modemmanager keeps messing with newly appeared modems, preventing (or delaying) Sakis3G script from using modem.

*   This switch is implied when --nohal switch is set.

-n, --noprobegsm
    Sakis3G script probes character device node (aka. tty node) for GSM capabilities before proceeding into attempting data connection. However, some modems do not advertise their GSM capabilities resulting into Sakis3G script aborting connection. Setting this switch allows you to force Sakis3G script consider tty node GSM capable.

-o, --osd
    This switch instructs Sakis3G script to use OSD messages for verbosing and displaying progress bars, instead of method provided by UI.

*   This switch requires aosd_cat/aosd or osc_cat/xosd being available within PATH.

*   If none of them is found within PATH, this switch will be ignored.

*   If both of them are found, osd_cat/xosd is used since it is able to provide progress bar functionality.

*   If --noverbose switch is set, OSD messages still appear as a final notification text (e.g. "Connected to..." or "Disconnected").

*   If you do need to also eliminate these:

*   Either set --nonotify switch, or

*   do not set --osd switch at first place.

Notes:

*   You need to have access to a valid local X session display. Either appropriately set DISPLAY environment variable or use Sakis3G DISPLAY and LOCALAUTHORITY variables to specify target display.

*   Use of this switch disables --balloons switch.

*   This switch is disabled when using a text mode UI, even if an X session DISPLAY is available/detected.

-P, --persist
    This switch is only taken into consideration with helper actor is running. This switch instructs helper to ignore user selecting Exit option and instead keep running.

*   This can be useful when you have to cope with users that keep selecting Exit and then complain that "it disappeared".

Note:
    Using this switch can be really annoying when you attempt to stop Sakis3G script by killing it.

-p, --pppd
    This switch instructs Sakis3G script to directly use pppd and not call wvdial. This switch is automatically set when wvdial is not found within PATH.

-q, --quiet
    Eliminates any confirmation/information/error/verbose text and progress bars from appearing. Dialogs prompting user to make a selection or provide a value will still appear. If you want to also suppress prompts, then both:

*   set --console switch, and

*   make sure --interactive switch is not set.

Notes:

*   This switch implies all --noerrors, --nonotify and --noverbose switches.

--noerrors
    Eliminates any error message from appearing.

Note:
    This switch is implied when --quiet switch is set.

--nonotify
    Eliminates any confirmation/information text from appearing. Dialogs prompting user to perform a selection or provide a value will still appear.

Note:
    This switch is implied when --quiet switch is set.

--noverbose
    Eliminates any verbose text or progress bar from appearing while Sakis3G script is working.

Note:
    This switch is implied when --quiet switch is set.

--scanno
    If modem is unable to automatically register a network, script will offer you to manually select one, by scanning for available networks. This switch instructs script not to scan for available networks and unconditionally fail whenever modem fails to register a network.

Also see:
    --scanyes

--scanyes
    Instructs script to scan for available networks whenever modem does not automatically register one.

Also see:
    --scanno

-s, --sudo
    This switch instructs Sakis3G script to always use sudo utility for acquiring root privileges. This can be useful when you do not want to share root password with users, still allow them to use Sakis3G script. Example:

    Type this:

    $ sudo visudo

    Append similar lines to file and save it.

     %bar ALL=(root) NOPASSWD: /usr/bin/sakis3g
     foo ALL=(root) NOPASSWD: /usr/bin/sakis3g

    User foo and members of bar group will then be able to use Sakis3G script without ever being prompt to supply administrator password.

Notes:

*   When using a sudo based distribution (like Ubuntu), there is no need to use this switch, since gksu will anyway use sudo as backend.

*   Setting this switch while using a Graphical UI, will force Sakis3G script to fail since sudo output will end up to void, unless you use NOPASSWD as illustrated in example above.

-T, --showtext
    This switch (in conjuction with --debug switch) results into debug information, regarding translations, to appear in standard error.

-t, --notranslate
    If there is a translation for your locale, it is automatically used as long as UI allows it. Setting this switch disables translations.

Notes:

*   If no appropriate translation is found, and no other translation file is provided through TRANSLATE variable, this switch is automatically set.

*   If you can afford English text, setting this switch will significantly improve performance.

-u, --unsafe
    Several USB devices have a tendency to "break" after being plugged for a while. This may happen due to:

1.  Bad hardware implementation of modem or USB controller, or

2.  Bugs in device EEPROM, or

3.  An unknown/undocumented AT command is required to prevent device from enterring its propretiary "power saving" mode.

    Sometimes, when this happens, any application trying to access USB bus goes stalled until device is physically removed from bus. Sakis3G script uses safety checks to avoid being stalled. Instead, it informs user that he should try reconnecting device. Setting this switch allows you to disable those safety checks.

*   If this never happens to your device, it is safe that you set it and reduce time required to connect by a maximum of 4 seconds.

*   If Sakis3G script incorrectly reports it happened and stops working for no reason, you can try setting this switch in case it helps (but I doubt it will).

-v, --voodoo
    Enables Voodoo mode. When Sakis3G script is executed under voodoo mode it will attempt to perform without your interference (if possible).

Note:
    You should be cautious when using voodoo mode. If your modem is not found with embedded Usb-ModeSwitch device database, and in order to avoid asking you about which your modem is, Sakis3G script may consider an attached mass storage USB device being a not yet switched device. This will lead into device being ejected.

--9menu, --kdialog, --zenity, --Xdialog
    Forces script to use respective application for presenting user interface.

*   If respective application is not found within PATH, another UI will be used instead.

*   Equivalent to:

     SGUI="9menu" or
     SGUI="kdialog" or
     SGUI="Xdialog" or
     SGUI="zenity"

Notes:

*   You need to have access to a valid local X session display. Either appropriately set DISPLAY environment variable or use Sakis3G DISPLAY and LOCALAUTHORITY variables to specify target display. Otherwise, a text mode UI will be used instead.

*   These switches imply --interactive switch.

*   Translations are not available when using 9menu or Xdialog for displaying UI.

--gnome-terminal, --konsole, --xterm
    Forces script to spawn a new Sakis3G script instance within respective terminal emulation application. Spawned instance will be using best available text mode UI. There is no way to specify UI which spawned instance will be using. If respective terminal application is not found within PATH, another UI will be used instead. Equivalent to:

     SGUI="gnome-terminal" or
     SGUI="konsole" or
     SGUI="xterm"

Notes:

*   You need to have access to a valid local X session display. Either appropriately set DISPLAY environment variable or use Sakis3G DISPLAY and LOCALAUTHORITY variables to specify target display. Otherwise, a text mode UI will be used instead.

*   These switches imply --interactive switch.

--dialog, --whiptail
    Forces script to use respective utility for presenting UI. If required utility is not found within PATH another UI will be used instead, not necessarily a text mode UI. If you want to make sure a text mode UI will be used, also supply --console switch. Equivalent to:

     SGUI="dialog" or
     SGUI="whiptail"

Note:
    Both switches imply --interactive switch.

--iterm
    Forces script not use any application for providing UI and instead resemble a simple text mode UI using colored output and gathering input through shell builtin functions. Equivalent to:

     SGUI="interactive terminal"

Note:
    Implies --interactive switch.

--term
    Forces script not to use any UI. All required options and values, of actor(s) specified in command line, must be already supplied either using command line or through a configuration file. Otherwise, actor(s) will fail. Equivalent to:

     SGUI="terminal"

--legacy
    Provided for convenience, simulating legacy version's appearance. Equivalent to supplying both:

     --9menu --osd

VARIABLES

Variables are expected to have the following syntax:

    <Variable name> = [ "<Variable value>" | <Valuewithnospace> ]

Which means that quotes are only necessary when a white space is to be included within value.

There is also multiple values syntax:

    <Variable name> = "<Value1> [ <Value2> [ ... ] ]"

Multiple values syntax allows you to provide multiple valid values for a variable. Sakis3G script will iterate through supplied values until first one being valid is encountered. This value automatically replaces contents of variable and iteration stops. Multiple values syntax is only available for the following variables:

 * APN * MODEM * USBDRIVER
 * BLUETOOTH * MOREMENU * USBINTERFACE
 * DESKTOPICON * OTHER * USBMODEM
 * MENU * RFSERVICE

Sakis3G script does not require that you provide a value to any of these variables. Even if it fails to find appropriate value itself, it will ask that you do it through UI. You only need to supply a value on variables if:

1.  no UI is available, rendering script unable to proceed lacking your feedback,

2.  you want to avoid navigating and providing answers through UI,

3.  automatically selected value is not correct,

4.  you want to prevent users from making wrong decisions themselves, and instead force appropriate values through a configuration file.

5.  you want to fine tune Sakis3G script operation.

AOSDFONT
    This variable defines font that should be used when displaying OSD messages using aosd_cat utility. If no value is provided, default value DejaVuSans 36 is loaded. If value specified refers to a font not available in system, aosd_cat replaces it with a valid one. Example:

     AOSDFONT="DejaVuSans 24"

    See also: XOSDFONT, OSDFONT

APN This variable defines APN (Access Point Name) that should be used to establish connection. Value assigned must be a valid APN for your operator, or word "CUSTOM_APN". If value assigned is not a valid APN for your operator, value is discarded. If your operator is not found within list of known operators, Sakis3G script will check if your modem has an APN stored since its last connection. If it has, that APN will be considered a valid APN. If none of the above operations indicated a valid APN for you to use, no matter what value is already loaded, "CUSTOM_APN" is automatically set.

*   When value "CUSTOM_APN" is specified, APN name is instead retrieved from CUSTOM_APN variable.

    Examples:

     APN="internet.myprovider"
     APN="CUSTOM_APN" CUSTOM_APN="internet.myprovider"

    See also: APN_USER, APN_PASS, CUSTOM_APN, FORCE_APN

APN_USER
    This value defines username which operator requires when using selected APN (Access Point Name).

*   If operator provided you with a username, required for performing connection, this is the place to use it.

*   Most operators are reasonable enough not to require a special username for widely used APNs.

*   If operator does not require a username, you can place anything you like.

Note:
    Even if your APN does not need a username, you still have to provide a value in this variable. By convention, on these cases we usually use "user" as username, indicating that no exact value is required.

    Example:

     APN="CUSTOM_APN"
     CUSTOM_APN="internet.myprovider.com"
     APN_USER="myphonenumber"

    See also: APN, APN_PASS, CUSTOM_APN, FORCE_APN

APN_PASS
    This value defines password which operator requires when using selected APN (Access Point Name).

*   If operator provided you with a password, required for performing connection, this is the place to use it.

*   Most operators are reasonable enough not to require a special password for widely used APNs.

*   If operator does not require a password, you can place anything you like.

Note:
    Even if your APN does not need a password, you still have to provide a value in this variable. By convention, on these cases we usually use "pass" as password, indicating that no exact value is required.

    Example:

     APN="CUSTOM_APN"
     CUSTOM_APN="internet.myprovider.com"
     APN_USER="myphonenumber"
     APN_PASS="internet123"

    See also: APN, APN_USER, CUSTOM_APN, FORCE_APN

BAUD
    This variable allows user to specify baud rate which pppd and/or wvdial should be instructed to use. Since wvdial also relies on pppd for establishing connection, you should consult pppd(8) for determining available values. If this variable is not set, default value 460800 is used.

    In addition to the usual numeric values, Sakis3G script allows assigning following values to this variable:

DEFAULT
    Results into value 460800 being used.

MAX Results into value 4000000 being used.

MIN Results into value 115200 being used.

Notes:

*   You can consult your running kernel's sources (header file include/asm/termbits.h) for a list of possible values.

*   Using an invalid or unsupported value might render connection impossible.

    Examples:

1.  Use maximum possible rate:
     BAUD=MAX

2.  Use a really safe value:
     BAUD=MIN

3.  Use a custom value:
     BAUD=921600

    See also: PPPD_OPTIONS

BLUETOOTH
    This variable should either contain the Bluetooth address of a currently discoverable Bluetooth device, or the word "UNDISCOVERABLE". If value is not valid, or device is not currently discoverable, value of this variable is discarded. This variable is only taken into consideration when OTHER variable contains word "BLUETOOTH" and is used for selecting a discoverable Bluetooth device. If value "UNDISCOVERABLE" is loaded, device selection procedure refers to UNDISCOVERABLE variable.

Note:
    Even if device is discoverable, you may find defining it as undiscoverable more convenient (see example #2). This can save you a couple of seconds by avoiding scan of Bluetooth devices.

    Examples:

1.  Define discoverable device:
     MODEM="OTHER" OTHER="BLUETOOTH"
     BLUETOOTH="00:25:47:59:AA:00"

2.  Define undiscoverable device:
     MODEM="OTHER" OTHER="BLUETOOTH"
     BLUETOOTH="UNDISCOVERABLE"
     UNDISCOVERABLE="00:25:47:59:AA:00"

    See also: MODEM, OTHER, RFSERVICE, RFCHANNEL, UNDISCOVERABLE

CHAT_ABORT_STRINGS
    This variable provides control over chat abort strings. You can find additional information on chat(8). If no value is assigned, default value is automatically set. Default value is:
     ABORT BUSY
     ABORT ERROR
     ABORT BLOCKED
     ABORT NOCARRIER

    Example: Prevent any PIN operation.

     CHAT_ABORT_STRINGS="ABORT BUSY ABORT ERROR ABORT BLOCKED ABORT NOCARRIER ABORT 'SIM PIN'"

CONNECTION_HOOK
    This variable allows you to specify a command that should be run, whenever a connection with operator is succesfully established. If no value is provided, nothing is executed. Connection hook is executed even if --nofix switch is set. Connected notification dialog of Sakis3G script does not appear before connection hook has returned. When executed, connection hook may enjoy information found within environment variables (see example). There is no "formal way" that connection hook could use to inform back Sakis3G script to terminate connection. Both output and exit status of connection hook command are discarded from Sakis3G script. If you need to disconnect from within connection hook you could still call:

    sakis3g disconnect

    You should however be aware that when connection hook has finished, Sakis3G script will display Failed to connect error dialog.

Example:
    Save environment variables, during invocation of connection hook, onto a file. You can later review them and construct amazing shell scripts like this one:

     CONNECTION_HOOK="set > /var/log/sakis3g.environment"

Note:
    This variable cannot be used from command line for security reasons. It would be risky to allow users provide a command to be executed with root privileges.

CUSTOM_APN
    This variable defines the APN (Access Point Name) that should be used to establish connection, which can be different than the one that internal database of Sakis3G script indicates, and the one that your modem might remember since its last connection. This variable is only taken into consideration when APN variable contains value "CUSTOM_APN". If value assigned is not an acceptable APN by your operator, connection will fail.

    Example:

     APN="CUSTOM_APN"
     CUSTOM_APN="internet.myprovider.com"
     APN_USER="myphonenumber"
     APN_PASS="internet123"

    See also: APN, APN_USER, APN_PASS, FORCE_APN

CUSTOM_TTY
    This variable should only contain the full path of an existing character device node. This variable is only taken into consideration when OTHER variable contains word "CUSTOM_TTY" and is used for selecting an already existing character device node offering modem capabilities. If value is not valid, or node does not exist already, value of this variable is discarded.

Note:
    If character device node resides within /dev directory, then you may just provide its basename (see example #2).

    Examples:

1.  Use already existing /dev/ttyS0 as a modem.
     MODEM="OTHER"
     OTHER="CUSTOM_TTY"
     CUSTOM_TTY="/dev/ttyS0"

2.  Same effect as example above.
     MODEM="OTHER"
     OTHER="CUSTOM_TTY"
     CUSTOM_TTY="ttyS0"

    See also: MODEM, OTHER

DESKTOP
    This variable allows you to specify directory where your desktop resides. This variable is only taken into consideration during desktop shortcut creation. If no value is provided, and DESKTOP environment variable exists, it is used instead. If directory specified does not exist and $HOME/$DESKTOP also does not exist, value is discarded. If no directory is found, desktop shortcut is created within your home directory.

Note:
    You may need to set this variable if you are using a localized name for your desktop folder.

    Examples:

1.  Point a customly named desktop.
     DESKTOP="/home/myself/FatsaKarta"

2.  A more appropriate form, with the same effect, for use within a global configuration file.
     DESKTOP="FatsaKarta"

DIAL
    This variable forces Sakis3G script to dial whatever is supplied as value, when attempting to establish data connection. Value should only contain decimal digits or symbols "#" and "*". If an invalid value is supplied, behavior depends on your modem, but it will usually fail to find carrier. If this value is not set, internal operators database is consulted to determine phone number to dial. If no value was supplied using this variable and no entry was found within internal operators database, default number "*99#" is dialed.

    Example:

     DIAL="*99***1#"

DISPLAY
    This variable allows you to explicitly specify the X session display on which Sakis3G UI should appear. If no value is provided, DISPLAY environment variable is automatically loaded if available. If loaded value does not refer to a valid local display, it is automatically discarded. If you have no access to display specified, value loaded is automatically discarded. To avoid such thing, either:

*   Merge cookie to your authority file, or Use LOCALAUTHORITY variable to point to an authority file which contains a valid cookie for display specified.

    If no value is provided, or is discarded already, then Sakis3G script will attempt to locate a text-mode UI instead. Example:

     DISPLAY=":1"

    See also: LOCALAUTHORITY

DNS This variable allows you to provide specific DNS servers that should be used after connection with operator is established. This variable is only taken into consideration if --nofix switch is not set. If no value is assigned, DNS server settings provided by operator are used. If operator did not provide any DNS servers settings, Sakis3G script will automatically set Google DNS servers for your convenience.

Note:
    If --googledns switch is set, this value will anyway be set to Google DNS servers.

Example:
    Equivalent to --googledns switch.

     DNS="8.8.8.8 8.8.4.4"

FORCE_APN
    This variable defines the APN (Access Point Name) that should be used to establish connection, no matter what internal database of Sakis3G script or your modem might indicate. If value assigned is not an acceptable APN by your operator, connection will fail. This variable seems like a duplicate to APN and/or CUSTOM_APN variables but is not:

1.  APN variable can only contain a value found within list of known operators, or retrieved from your modem's memory.

2.  CUSTOM_APN variable can indeed contain any value but causes both internal database and modem be queried, while seeking for a valid APN, in cases where operator was not found within list of known operators.

3.  FORCE_APN variable bypasses all validation, queries to internal database and query against modem memory to unconditionally set specified APN.

Examples:

1.  Operator is found within database and APN was also mentioned. Username and password are also retrieved from database and they need not to be mentioned:
     APN="internet.myprovider.com"

2.  Operator was not found within database but APN was retrieved by modem's memory. In this case, you have to supply username and password:
     APN="internet.myprovider.com"
     APN_USER="postpay"
     APN_PASS="internet"

3.  Operator was not found within database and modem did not report any recent APN being used. Or, what was found within database is not appropriate for your contract/product. In both cases, you have to supply all information yourself:
     APN="CUSTOM_APN"
     CUSTOM_APN="internet.myprovider.com"
     APN_USER="postpay"
     APN_PASS="internet"

4.  No matter if operator exists or not in database, defined APN is used and modem is never queried:
     FORCE_APN="internet.myprovider.com"
     APN_USER="postpay"
     APN_PASS="internet"

5.  An alternative syntax having the same effect with example #4:
     FORCE_APN="internet.myprovider.com::postpay:internet"

Notes:

*   You can use FORCE_APN variable to improve performance by skipping internal database lookups (compare examples #3 and #4).

*   FORCE_APN variable offers an alternative syntax which allows setting up APN_USER and APN_PASS variables also (compare examples #4 and #5). See also: APN, APN_USER, APN_PASS, CUSTOM_APN

FORCE_ISP
    This variable instructs Sakis3G script to disable roaming on modem and instead stick with network specified in value. Value should contain the numeric ID of network to be used. If an invalid value is supplied, behavior depends on your modem (whether it will disconnect from any network already registered to, or will remain connected). If network specified is not available, or modem refused to register network, Sakis3G script will refuse to proceed with connection. This variable can be useful, when you live near a country's borders, into avoiding unintended roaming costs. However, this may lead into limited network coverage on cases where your operator transparently (without additional cost) cooperates with another network to extend coverage.

Example:
    Force modem to stick with GR COSMOTE.

     FORCE_ISP="20201"

Note:
    To discover your network's ID, consult Connection Information after getting connected, or use:

     $ sakis3g console info

INIT
    This variable provides access to initialization AT commands that will be sent to modem. Value provided here is sent to modem just before dialing operator and immediately after Sakis3G script has finished all initialization it should do. This variable is provided for end-user to be able to supply the weird-non-standard command that might be required by modem for establishing a reliable connection.

Note:
    Dialing will occur even if AT commands, specified by this value, produced an ERROR to modem.

Example:
    Request some information from modem.

    INIT="ATI AT+CGDCONT? AT+COPS=0,2 AT+COPS? AT+COPS=0,0 AT+COPS?"

    See also: PREPARE

LOCALAUTHORITY
    This variable allows you to specify an authority file which contains a valid cookie for X display selected (either by environment variable DISPLAY, or by DISPLAY variable). If no value is provided, your own X authority file is assumed. If value does not refer to an X authority file, or read access is not granted, it is automatically discarded. If both your own and the alternative X authority files do not contain a valid cookie for X display selected, Sakis3G script will attempt to locate a text-mode UI instead. Example:

    XAUTHORITY="/home/sakis/authorities/cryo"

    See also: DISPLAY

LOG_POSITION
    This variable allows you to specify position of log file that should be used when Sakis3G script is called through udevd. If no value is provided, default value /var/log/sakis3g.log is used. If value provided refers to a non-existing path, value is discarded. Example:

    LOG_FILE="/var/log/sakis3g/log"

MENU
    This variable provides a shortcut for menu action that should be followed upon first execution of menu actor. Value assigned will be discarded after menu actor is executed, and only after corresponding actor, specified by value, has finished (regardless of success or failure) . Use of this variable could be avoided since all operations offered by menu actor are also available as stand-alone actors.

    Valid values are:

*   CONNECT: Calls connect actor.

*   DISCONNECT: Calls disconnect actor.

*   INFO: Calls info actor.

*   DESKTOP: Calls desktop actor.

*   ABOUT: Calls about actor.

*   MOREMENU: Calls moremenu actor.

*   EXIT: Forces menu actor to return 98 on exit, preventing execution of remaining actors within currently executed chain.

    If value assigned is not valid, it is automatically discarded. This is essentially true when:

*   Value assigned is "DISCONNECT", "INFO", "DESKTOP" while not connected.

*   Value assigned is "CONNECT" while already connected.

Examples:

1.  Implement splash-like functionality for the first time that menu will appear.
     MENU="ABOUT"

2.  Force menu not to appear. However, defining menu actor twice, will eventually make menu appear.
     MENU="EXIT"

    See also: MOREMENU

MENUFONT
    This variable defines font that should be used when using 9menu for displaying UI. If no value is provided, default value "-monotype-arial-medium-r-normal-*-18-*-*-*-*-*-*-*" is loaded. If value specified refers to a font not available in system, 9menu replaces it with a valid one. You can use xlsfonts or xfontsel utilities for discovering/constructing a valid font string.

    Examples:

*   MENUFONT="-unknown-freesans-medium-r-normal-*-17-*-*-*-*-*-*-*"

*   MENUFONT="-dejavu-sans-medium-r-normal-*-18-*-*-*-*-*-*-*"

    See also: AOSDFONT, OSDFONT, XOSDFONT

MODEM
    This variable is expected to either hold USB IDs of the USB modem which is going to be used for getting connected, or the word "OTHER". If word "OTHER" is found, device selection procedure will refer to OTHER variable for locating modem that will be used. If provided value refers to a USB modem not currently connected, its contents are discarded.

*   If no value is loaded (or loaded value was discarded previously) and only one USB modem is detected, this one USB modem is automatically selected.

*   If no value is loaded (or loaded value was discarded previously) and no other USB modem is detected, it is automatically loaded with the "OTHER" value.

    Therefore, use of MODEM variable is only meaningful when:

1.  There are more than two USB modems plugged and you need to select a specific one (see example #1).

2.  Your USB device is not automatically detected as a USB modem (see example #3).

3.  Your modem is not a USB modem (see example #4).

    Examples:

1.  Select one among many modems.
     MODEM="19d2:2000"

2.  Force script to always ask about modem type.
     MODEM="OTHER"

3.  Consider a USB device as a USB modem.
     MODEM="OTHER"
     OTHER="USBMODEM"
     USBMODEM="19d2:2001"

4.  Define a specific tty as an already setup modem.
     MODEM="OTHER"
     OTHER="CUSTOM_TTY"
     CUSTOM_TTY="/dev/ttyS1"

    See also: OTHER, USBMODEM, BLUETOOTH, CUSTOM_TTY

MOREMENU
    This variable provides a shortcut for menu action that should be followed upon first execution of moremenu actor. Value assigned will be discarded after moremenu actor is executed, and only after corresponding actor, specified by value, has finished (regardless of success or failure) . Use of this variable could be avoided since all operations offered by moremenu actor are also available as stand-alone actors.

    Valid values are:

*   CONNECT: Calls connect actor.

*   RECONNECT: Calls reconnect actor.

*   DISCONNECT: Calls disconnect actor.

*   PREPARE: Calls prepare actor.

*   SETUP: Calls setup actor.

*   SWITCH: Calls switchonly actor.

*   COMPILE: Calls recompile actor.

*   INFO: Calls info actor.

*   REPORT: Calls report actor.

*   DESKTOP: Calls desktop actor.

*   ABOUT: Calls about actor.

*   HELP: Calls showhelp actor.

*   EXIT: Forces moremenu actor to return 98 on exit, preventing execution of remaining actors within currently executed chain.

    If value assigned is not valid, it is automatically discarded. This is essentially true when:

*   Value assigned is "DISCONNECT", "RECONNECT", "INFO", "REPORT" while not connected.

*   Value assigned is "CONNECT", "PREPARE", "SETUP", "SWITCH" while already connected.

Examples:

1.  Implement splash-like functionality for the first time that menu will appear.
     MOREMENU="ABOUT"

2.  Force menu not to appear. However, defining moremenu actor twice, will eventually make menu appear.
     MOREMENU="EXIT"

    See also: MENU

OSDFONT
    This variable defines font string that should be used when displaying OSD messages regardless of backend utility. It just sets both AOSDFONT and XOSDFONT variables to the same content. It is user's responsibility to supply font string expected by selected OSD backend.

Examples:

1.  Defining a font appropriate for use with aosd_cat
     OSDFONT="DejaVuSans 24"

2.  Defining a font appropriate for use with osd_cat
     OSDFONT="-misc-fixed-medium-r-semicondensed--36-*-*-*-c-*-*-*"

    See also: AOSDFONT, XOSDFONT

OTHER
    This variable should only contain one of possible values. It is only taken into consideration if MODEM variable contains word "OTHER" and is used for determining type of modem. According to its value, device selection procedure will refer to USBMODEM, BLUETOOTH or CUSTOM_TTY variable for locating modem that will be used.

Examples:

1.  Modem is a USB modem.
     MODEM="OTHER"
     OTHER="USBMODEM"

2.  Modem is a Bluetooth modem.
     MODEM="OTHER"
     OTHER="BLUETOOTH"

3.  3. Modem is already setup and a tty already exist.
     MODEM="OTHER"
     OTHER="CUSTOM_TTY" See also: MODEM, USBMODEM, BLUETOOTH, CUSTOM_TTY

PPPD_OPTIONS
    This variable allows you to modify arguments that will be passed to pppd daemon. This variable is only taken into consideration when wvdial is not installed, or when --pppd switch is set. If no values are provided, default values are used. Default values used when no value is supplied are:

    modem crtscts -detach defaultroute dump noipdefault replacedefaultroute usepeerdns usehostname ktune logfd 2 noauth name sakis3g lock maxfail 3

    If, within directory denoted by PPPD_PEERS variable, exists a peer (a file) named sakis3g, then:

*   this variable is ignored, and

*   daemon pppd is called with the following arguments:

     -detach dump logfd 2
     maxfail 3 name sakis3gpeer call sakis3g

*   and you should instead edit file PPPD_PEERS/sakis3g to modify pppd options.

Note:
    You should avoid specifying baud rate within this variable and instead use BAUD variable. Specifying baud rate using PPPD_OPTIONS will result into two baud rates (possibly different) being passed to pppd, leading to doubts on which one will be used.

Example:
    Options to pppd are read from file /home/sakis/custom

     PPPD_PEERS="/home/sakis"
     PPPD_OPTIONS="call custom"

    See also: BAUD, PPPD_PEERS

PPPD_PEERS
    This variable allows you to specify directory where pppd peer files are located. If no value is provided, default value "/etc/ppp/peers" is used. If:

*   directory specified exists, and

*   within directory a file named sakis3g exists, and

*   wvdial is not installed, or --pppd switch is set, then

    pppd is instructed to read options from PPPD_PEERS/sakis3g.

Example:
    Let it check for if file /etc/ppp/peers/custom/sakis3g exists.

     PPPD_PEERS="/etc/ppp/peers/custom"

    See also: PPPD_OPTIONS

PPPINT
    This variable allows you to specify interface name your system uses for P-t-P connection. If no value is provided, default value "ppp0" is used. This value is only taken into consideration when checking status of connection. This value is not taken into consideration when disconnecting:

*   All active pppd sessions are terminated, eliminating all your P-t-P connections.

*   While disconnecting, this script will kill all running pppd instances, thus eliminating any other P-t-P connections you might have running.

Notes:

*   If value provided does not match interface name created, you should expect some serious Sakis3G script malfunctions to occur.

*   If you have a complex setup (i.e. bridging across ppp connections or multilink ppp connections), you should NOT (need to) use this script, as it also messes up with your routing tables: you were warned.

Example:
    Use ppp1 instead of ppp0.

     PPPINT="ppp1"
     PPPD_OPTIONS="unit 1 ...

PREPARE
    This variable allows you to send custom AT commands to modem. AT commands specified here are sent to modem before any other command is sent.

Note:
    Procedure will carry on even if AT commands, specified by this value, produced an ERROR to modem.

Example:
    Make sure ECHO is turned on.

    PREPARE="ATE1"

    See also: INIT

RFCHANNEL
    This variable should contain the decimal representation of an RFCOMM channel of the Bluetooth device previously defined using BLUETOOTH or UNDISCOVERABLE variables. This variable is only taken into consideration when RFSERVICE variable contains word "RFCHANNEL". If value is not valid, or RFCOMM channel defined, is not available/valid in device, connection will be impossible.

Note:
    Even if device reports RFCOMM channel, you may find defining it through RFCHANNEL variable more convenient (see examples #2 and #3). This can save you a couple of seconds by avoiding querying Bluetooth device for available services. Examples #1 and #3 have exactly the same effect if device and appropriate channel are discoverable. However, example #3 skips all validation saving up to 6 seconds. Keep in mind, this may lead into problems if device is currently out of range.

Examples:

1.  Define discoverable channel.
     MODEM="OTHER"
     OTHER="BLUETOOTH"
     BLUETOOTH="00:25:47:59:AA:00"
     RFSERVICE="1"

2.  Define undiscoverable channel.
     MODEM="OTHER"
     OTHER="BLUETOOTH"
     BLUETOOTH="00:25:47:59:AA:00"
     RFSERVICE="RFCHANNEL"
     RFCHANNEL="1"

3.  Skip all validation.
     MODEM="OTHER"
     OTHER="BLUETOOTH"
     BLUETOOTH="UNDISCOVERABLE"
     UNDISCOVERABLE="00:25:47:59:AA:00"
     RFSERVICE="RFCHANNEL"
     RFCHANNEL="1"

    See also: BLUETOOTH, MODEM, OTHER, RFSERVICE, UNDISCOVERABLE

RFSERVICE
    This variable should contain the decimal representation of a discoverable RFCOMM channel of the Bluetooth device previously defined using BLUETOOTH or UNDISCOVERABLE variables. If value is not valid, or RFCOMM channel was not reported by device, value of this variable is discarded. If this variable is loaded with the "RFCHANNEL" value, device selection procedure skips validating RFCOMM channel by querying Bluetooth device and uses channel defined by RFCHANNEL variable unconditionally.

Note:
    Even if device reports RFCOMM channel, you may find defining it through RFCHANNEL variable more convenient (see examples #2 and #3). This can save you a couple of seconds by avoiding querying Bluetooth device for available services. Examples #1 and #3 have exactly the same effect if device and appropriate channel are discoverable. However, example #3 skips all validation saving up to 6 seconds. Keep in mind, this may lead into problems if device is currently out of range.

Examples:

1.  Define discoverable channel.
     MODEM="OTHER"
     OTHER="BLUETOOTH"
     BLUETOOTH="00:25:47:59:AA:00"
     RFSERVICE="1"

2.  Define undiscoverable channel.
     MODEM="OTHER"
     OTHER="BLUETOOTH"
     BLUETOOTH="00:25:47:59:AA:00"
     RFSERVICE="RFCHANNEL"
     RFCHANNEL="1"

3.  Skip all validation.
     MODEM="OTHER"
     OTHER="BLUETOOTH"
     BLUETOOTH="UNDISCOVERABLE"
     UNDISCOVERABLE="00:25:47:59:AA:00"
     RFSERVICE="RFCHANNEL"
     RFCHANNEL="1"

    See also: BLUETOOTH, MODEM, OTHER, RFCHANNEL, UNDISCOVERABLE

SGUI
    This variable defines UI that should be used, overriding the one that Sakis3G script would automatically select. If value is not within list of valid values, it is automatically discarded and UI selection procedure will proceed like this variable was never set. If value specified refers to a UI not currently available, it is automatically discarded:

1.  If you selected a graphical UI while no X session exists, or

2.  If utility required for selected UI was not found within PATH.

    Valid values are:

       Text mode Graphics mode
     * terminal * xterm
     * interactive terminal * konsole
     * dialog * gnome-terminal
     * whiptail * 9menu
                            * Xdialog
                            * kdialog
                            * zenity

    Keep in mind that:

*   All values, except "terminal", also set --interactive switch.

*   Values "xterm", "konsole" and "gnome-terminal" spawn corresponding terminal emulation utility, within which Sakis3G script is executed, with --console switch enabled, leading into one of "whiptail", "dialog" or "interactive terminal" being selected as UI.

Notes:

*   There is no way to affect UI that will be used by newly spawned Sakis3G script instance within terminal emulation utility.

*   You can easily render Sakis3G script invisible (thus, unusable) by modifying desktop shortcut so that it appoints SGUI variable a value referring to a text mode UI. This way, whenever you double-click desktop shortcut, Sakis3G script will actually being started, but its output will end-up to void.

Examples:

1.  Use 9menu:
     SGUI="9menu"

2.  Use dialog:
     SGUI="dialog"

SIM_PIN
    This variable allows you to explicitly provide PIN number that should be used if SIM card placed inside modem requires it. This value is only utilized when modem reports that SIM card needs PIN number. If value provided is not consisted of exactly four decimal digits, it is automatically discarded. If no value is provided, or is discarded already, then Sakis3G script:

*   will ask you to provide it, if selected UI allows it, or

*   will abort execution, if selected UI does not provide a way to ask you.

Notes:

*   If value supplied, by any means, is rejected by modem, Sakis3G script will immediately cease operation to prevent you from having your SIM card PIN-blocked, from accidental consequent failed attempts. If forementioned failed attempt, had been the last one allowed by your SIM card, then you just succeed into PIN-blocking your SIM card.

*   When modem reports SIM card needs another kind of number (PIN #2, PUK, PUK #2), Sakis3G script will refuse to proceed. You might temporarily place your SIM card to a cellular phone, unlock card so that it asks for PIN number instead.

Example:

     SIM_PIN="1212"

TRANSLATION
    This variable defines full path name of translation file that should be used. This is useful for testing purposes, when creating a new translation for Sakis3G script. Setting this variable empty will not succeed into preventing Sakis3G script from using translations. If you want to prevent translations you should use --notranslate switch. Example:
     TRANSLATION="/home/sakis/Documents/sakis3g.translation.txt"

UNDISCOVERABLE
    This variable should only contain a valid Bluetooth address of a Bluetooth device. If value is not valid, or device is not currently within range, connecting will be impossible. This variable is only taken into consideration when BLUETOOTH variable contains word "UNDISCOVERABLE" and is used for manually specifying the Bluetooth address of a undiscoverable Bluetooth device.

Note:
    Even if device is discoverable, you may find defining it as undiscoverable more convenient (see example #2). This can save you a couple of seconds by avoiding scan of Bluetooth devices.

Examples:

1.  Define discoverable device.
     MODEM="OTHER"
     OTHER="BLUETOOTH"
     BLUETOOTH="00:25:47:59:AA:00"

2.  Define undiscoverable device.
     MODEM="OTHER"
     OTHER="BLUETOOTH"
     BLUETOOTH="UNDISCOVERABLE"
     UNDISCOVERABLE="00:25:47:59:AA:00"

    See also: MODEM, OTHER, BLUETOOTH

USBDRIVER
    This variable should contain the name of kernel module that should be bound to USB interface which provides a usable data modem, for corresponding device node to be created. If assigned value is not valid, or if this kernel module does not exist, value is discarded. If no value is assigned, or value was discarded previously, script will seek for a candidate driver. If no candidate is found, it automatically selects option module. It can sometimes be useful that you explicitly define option module, to avoid having to select it among other candidates.

Examples:

1.  Select cdc_acm module:
     USBDRIVER="cdc_acm"

2.  Explicitly select option module:
     USBDRIVER="option"

    See also: USBINTERFACE

USBINTERFACE
    This variable should contain the decimal representation of USB interface that should be used. If assigned value is not valid, or if this interface number does not exist, value is discarded.

Example:
    Select interface #3:

     USBINTERFACE="3"

    See also: USBDRIVER

USBMODEM
    This variable should only contain USB IDs of a currently connected USB device. If value is not valid, or device is not currently connected, value of this variable is discarded. This variable is only taken into consideration when OTHER variable contains word "USBMODEM" and is used for selecting the USB device which is actually a modem. While this variable looks an equivalent to MODEM variable, they actually differ:

*   MODEM variable considers valid USB IDs those listed within its Sakis3G device database, or within embedded Usb-Modeswitch device database.

*   USBMODEM variable considers valid all USB IDs of currently connected USB devices.

Example:
    Consider a USB device as a USB modem:

     MODEM="OTHER"
     OTHER="USBMODEM"
     USBMODEM="19d2:2001"

    See also: MODEM, OTHER, USBDRIVER, USBINTERFACE

XOSDFONT
    This variable defines font that should be used when displaying OSD messages using osd_cat utility. If no value is provided, default value "-*-freesans-bold-r-*-*-36-*-*-*-*-*-*-*" is loaded. If value specified refers to a font not available in system, osd_cat does not display message requested. You can use xlsfonts or xfontsel utilities for discovering/constructing a valid font string.

Examples:

    XOSDFONT="-*-helvetica-*-r-*-*-36-*-*-*-*-*-*-*" XOSDFONT="-adobe-helvetica-*-r-*-*-24-*-*-*-*-*-*-*" XOSDFONT="-misc-fixed-medium-r-semicondensed--36-*-*-*-c-*-*-*" XOSDFONT="-monotype-arial-medium-r-normal-*-36-*-*-*-*-*-*-*"

    See also: AOSDFONT, MENUFONT, OSDFONT

SEE ALSO

sakis3g(1), chat(8), pppd(8)

AUTHOR

Sakis3G script and this man page are written by Sakis Dimopoulos (sakis at project's domain). Official page of project is at:

    http://www.sakis3g.org/

Official documentation of latest Sakis3G script version, is available at:

    http://wiki.sakis3g.org/

LICENSE

Sakis3G script is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details:

    http://www.gnu.org/licenses/gpl.txt

Above statement includes additional charges you may receive from your operator by using this program, defects to your SIM card including but not limited to being PIN blocked, defects on your hardware, 3G service abuse ban etc. USE WITH CARE. Author of this program or authors of any of its dependencies have no responsibility for what may happen to you.

Author is not related in any way with any of the companies, being operators or modem manufacturers, other than being a customer to some of them. Logos and trademarks mentioned by this package belong to their respective owners.

This program, in order to remain as self-contained as possible, includes original source packages of some of its dependencies. You should consult their respective COPYING and README files to identify terms under which they are redistributed by Sakis3G script.