| GigaSet 307x Device Driver | |
| ========================== | |
| 1. Requirements | |
| ------------ | |
| 1.1. Hardware | |
| -------- | |
| This driver supports the connection of the Gigaset 307x/417x family of | |
| ISDN DECT bases via Gigaset M101 Data, Gigaset M105 Data or direct USB | |
| connection. The following devices are reported to be compatible: | |
| Bases: | |
| Siemens Gigaset 3070/3075 isdn | |
| Siemens Gigaset 4170/4175 isdn | |
| Siemens Gigaset SX205/255 | |
| Siemens Gigaset SX353 | |
| T-Com Sinus 45 [AB] isdn | |
| T-Com Sinus 721X[A] [SE] | |
| Vox Chicago 390 ISDN (KPN Telecom) | |
| RS232 data boxes: | |
| Siemens Gigaset M101 Data | |
| T-Com Sinus 45 Data 1 | |
| USB data boxes: | |
| Siemens Gigaset M105 Data | |
| Siemens Gigaset USB Adapter DECT | |
| T-Com Sinus 45 Data 2 | |
| T-Com Sinus 721 data | |
| Chicago 390 USB (KPN) | |
| See also http://www.erbze.info/sinus_gigaset.htm and | |
| http://gigaset307x.sourceforge.net/ | |
| We had also reports from users of Gigaset M105 who could use the drivers | |
| with SX 100 and CX 100 ISDN bases (only in unimodem mode, see section 2.5.) | |
| If you have another device that works with our driver, please let us know. | |
| Chances of getting an USB device to work are good if the output of | |
| lsusb | |
| at the command line contains one of the following: | |
| ID 0681:0001 | |
| ID 0681:0002 | |
| ID 0681:0009 | |
| ID 0681:0021 | |
| ID 0681:0022 | |
| 1.2. Software | |
| -------- | |
| The driver works with the Kernel CAPI subsystem as well as the old | |
| ISDN4Linux subsystem, so it can be used with any software which is able | |
| to use CAPI 2.0 or ISDN4Linux for ISDN connections (voice or data). | |
| There are some user space tools available at | |
| http://sourceforge.net/projects/gigaset307x/ | |
| which provide access to additional device specific functions like SMS, | |
| phonebook or call journal. | |
| 2. How to use the driver | |
| --------------------- | |
| 2.1. Modules | |
| ------- | |
| For the devices to work, the proper kernel modules have to be loaded. | |
| This normally happens automatically when the system detects the USB | |
| device (base, M105) or when the line discipline is attached (M101). It | |
| can also be triggered manually using the modprobe(8) command, for example | |
| for troubleshooting or to pass module parameters. | |
| The module ser_gigaset provides a serial line discipline N_GIGASET_M101 | |
| which uses the regular serial port driver to access the device, and must | |
| therefore be attached to the serial device to which the M101 is connected. | |
| The ldattach(8) command (included in util-linux-ng release 2.14 or later) | |
| can be used for that purpose, for example: | |
| ldattach GIGASET_M101 /dev/ttyS1 | |
| This will open the device file, attach the line discipline to it, and | |
| then sleep in the background, keeping the device open so that the line | |
| discipline remains active. To deactivate it, kill the daemon, for example | |
| with | |
| killall ldattach | |
| before disconnecting the device. To have this happen automatically at | |
| system startup/shutdown on an LSB compatible system, create and activate | |
| an appropriate LSB startup script /etc/init.d/gigaset. (The init name | |
| 'gigaset' is officially assigned to this project by LANANA.) | |
| Alternatively, just add the 'ldattach' command line to /etc/rc.local. | |
| The modules accept the following parameters: | |
| Module Parameter Meaning | |
| gigaset debug debug level (see section 3.2.) | |
| startmode initial operation mode (see section 2.5.): | |
| bas_gigaset ) 1=ISDN4linux/CAPI (default), 0=Unimodem | |
| ser_gigaset ) | |
| usb_gigaset ) cidmode initial Call-ID mode setting (see section | |
| 2.5.): 1=on (default), 0=off | |
| Depending on your distribution you may want to create a separate module | |
| configuration file like /etc/modprobe.d/gigaset.conf for these. | |
| 2.2. Device nodes for user space programs | |
| ------------------------------------ | |
| The device can be accessed from user space (eg. by the user space tools | |
| mentioned in 1.2.) through the device nodes: | |
| - /dev/ttyGS0 for M101 (RS232 data boxes) | |
| - /dev/ttyGU0 for M105 (USB data boxes) | |
| - /dev/ttyGB0 for the base driver (direct USB connection) | |
| If you connect more than one device of a type, they will get consecutive | |
| device nodes, eg. /dev/ttyGU1 for a second M105. | |
| You can also set a "default device" for the user space tools to use when | |
| no device node is given as parameter, by creating a symlink /dev/ttyG to | |
| one of them, eg.: | |
| ln -s /dev/ttyGB0 /dev/ttyG | |
| The devices accept the following device specific ioctl calls | |
| (defined in gigaset_dev.h): | |
| ioctl(int fd, GIGASET_REDIR, int *cmd); | |
| If cmd==1, the device is set to be controlled exclusively through the | |
| character device node; access from the ISDN subsystem is blocked. | |
| If cmd==0, the device is set to be used from the ISDN subsystem and does | |
| not communicate through the character device node. | |
| ioctl(int fd, GIGASET_CONFIG, int *cmd); | |
| (ser_gigaset and usb_gigaset only) | |
| If cmd==1, the device is set to adapter configuration mode where commands | |
| are interpreted by the M10x DECT adapter itself instead of being | |
| forwarded to the base station. In this mode, the device accepts the | |
| commands described in Siemens document "AT-Kommando Alignment M10x Data" | |
| for setting the operation mode, associating with a base station and | |
| querying parameters like field strengh and signal quality. | |
| Note that there is no ioctl command for leaving adapter configuration | |
| mode and returning to regular operation. In order to leave adapter | |
| configuration mode, write the command ATO to the device. | |
| ioctl(int fd, GIGASET_BRKCHARS, unsigned char brkchars[6]); | |
| (usb_gigaset only) | |
| Set the break characters on an M105's internal serial adapter to the six | |
| bytes stored in brkchars[]. Unused bytes should be set to zero. | |
| ioctl(int fd, GIGASET_VERSION, unsigned version[4]); | |
| Retrieve version information from the driver. version[0] must be set to | |
| one of: | |
| - GIGVER_DRIVER: retrieve driver version | |
| - GIGVER_COMPAT: retrieve interface compatibility version | |
| - GIGVER_FWBASE: retrieve the firmware version of the base | |
| Upon return, version[] is filled with the requested version information. | |
| 2.3. CAPI | |
| ---- | |
| If the driver is compiled with CAPI support (kernel configuration option | |
| GIGASET_CAPI) the devices will show up as CAPI controllers as soon as the | |
| corresponding driver module is loaded, and can then be used with CAPI 2.0 | |
| kernel and user space applications. For user space access, the module | |
| capi.ko must be loaded. | |
| Legacy ISDN4Linux applications are supported via the capidrv | |
| compatibility driver. The kernel module capidrv.ko must be loaded | |
| explicitly with the command | |
| modprobe capidrv | |
| if needed, and cannot be unloaded again without unloading the driver | |
| first. (These are limitations of capidrv.) | |
| Most distributions handle loading and unloading of the various CAPI | |
| modules automatically via the command capiinit(1) from the capi4k-utils | |
| package or a similar mechanism. Note that capiinit(1) cannot unload the | |
| Gigaset drivers because it doesn't support more than one module per | |
| driver. | |
| 2.4. ISDN4Linux | |
| ---------- | |
| If the driver is compiled without CAPI support (native ISDN4Linux | |
| variant), it registers the device with the legacy ISDN4Linux subsystem | |
| after loading the module. It can then be used with ISDN4Linux | |
| applications only. Most distributions provide some configuration utility | |
| for setting up that subsystem. Otherwise you can use some HOWTOs like | |
| http://www.linuxhaven.de/dlhp/HOWTO/DE-ISDN-HOWTO-5.html | |
| 2.5. Unimodem mode | |
| ------------- | |
| In this mode the device works like a modem connected to a serial port | |
| (the /dev/ttyGU0, ... mentioned above) which understands the commands | |
| ATZ init, reset | |
| => OK or ERROR | |
| ATD | |
| ATDT dial | |
| => OK, CONNECT, | |
| BUSY, | |
| NO DIAL TONE, | |
| NO CARRIER, | |
| NO ANSWER | |
| <pause>+++<pause> change to command mode when connected | |
| ATH hangup | |
| You can use some configuration tool of your distribution to configure this | |
| "modem" or configure pppd/wvdial manually. There are some example ppp | |
| configuration files and chat scripts in the gigaset-VERSION/ppp directory | |
| in the driver packages from http://sourceforge.net/projects/gigaset307x/. | |
| Please note that the USB drivers are not able to change the state of the | |
| control lines. This means you must use "Stupid Mode" if you are using | |
| wvdial or you should use the nocrtscts option of pppd. | |
| You must also assure that the ppp_async module is loaded with the parameter | |
| flag_time=0. You can do this e.g. by adding a line like | |
| options ppp_async flag_time=0 | |
| to an appropriate module configuration file, like | |
| /etc/modprobe.d/gigaset.conf. | |
| Unimodem mode is needed for making some devices [e.g. SX100] work which | |
| do not support the regular Gigaset command set. If debug output (see | |
| section 3.2.) shows something like this when dialing: | |
| CMD Received: ERROR | |
| Available Params: 0 | |
| Connection State: 0, Response: -1 | |
| gigaset_process_response: resp_code -1 in ConState 0 ! | |
| Timeout occurred | |
| then switching to unimodem mode may help. | |
| If you have installed the command line tool gigacontr, you can enter | |
| unimodem mode using | |
| gigacontr --mode unimodem | |
| You can switch back using | |
| gigacontr --mode isdn | |
| You can also put the driver directly into Unimodem mode when it's loaded, | |
| by passing the module parameter startmode=0 to the hardware specific | |
| module, e.g. | |
| modprobe usb_gigaset startmode=0 | |
| or by adding a line like | |
| options usb_gigaset startmode=0 | |
| to an appropriate module configuration file, like | |
| /etc/modprobe.d/gigaset.conf | |
| 2.6. Call-ID (CID) mode | |
| ------------------ | |
| Call-IDs are numbers used to tag commands to, and responses from, the | |
| Gigaset base in order to support the simultaneous handling of multiple | |
| ISDN calls. Their use can be enabled ("CID mode") or disabled ("Unimodem | |
| mode"). Without Call-IDs (in Unimodem mode), only a very limited set of | |
| functions is available. It allows outgoing data connections only, but | |
| does not signal incoming calls or other base events. | |
| DECT cordless data devices (M10x) permanently occupy the cordless | |
| connection to the base while Call-IDs are activated. As the Gigaset | |
| bases only support one DECT data connection at a time, this prevents | |
| other DECT cordless data devices from accessing the base. | |
| During active operation, the driver switches to the necessary mode | |
| automatically. However, for the reasons above, the mode chosen when | |
| the device is not in use (idle) can be selected by the user. | |
| - If you want to receive incoming calls, you can use the default | |
| settings (CID mode). | |
| - If you have several DECT data devices (M10x) which you want to use | |
| in turn, select Unimodem mode by passing the parameter "cidmode=0" to | |
| the appropriate driver module (ser_gigaset or usb_gigaset). | |
| If you want both of these at once, you are out of luck. | |
| You can also use the tty class parameter "cidmode" of the device to | |
| change its CID mode while the driver is loaded, eg. | |
| echo 0 > /sys/class/tty/ttyGU0/cidmode | |
| 2.7. Dialing Numbers | |
| --------------- | |
| The called party number provided by an application for dialing out must | |
| be a public network number according to the local dialing plan, without | |
| any dial prefix for getting an outside line. | |
| Internal calls can be made by providing an internal extension number | |
| prefixed with "**" (two asterisks) as the called party number. So to dial | |
| eg. the first registered DECT handset, give "**11" as the called party | |
| number. Dialing "***" (three asterisks) calls all extensions | |
| simultaneously (global call). | |
| This holds for both CAPI 2.0 and ISDN4Linux applications. Unimodem mode | |
| does not support internal calls. | |
| 2.8. Unregistered Wireless Devices (M101/M105) | |
| ----------------------------------------- | |
| The main purpose of the ser_gigaset and usb_gigaset drivers is to allow | |
| the M101 and M105 wireless devices to be used as ISDN devices for ISDN | |
| connections through a Gigaset base. Therefore they assume that the device | |
| is registered to a DECT base. | |
| If the M101/M105 device is not registered to a base, initialization of | |
| the device fails, and a corresponding error message is logged by the | |
| driver. In that situation, a restricted set of functions is available | |
| which includes, in particular, those necessary for registering the device | |
| to a base or for switching it between Fixed Part and Portable Part | |
| modes. See the gigacontr(8) manpage for details. | |
| 3. Troubleshooting | |
| --------------- | |
| 3.1. Solutions to frequently reported problems | |
| ----------------------------------------- | |
| Problem: | |
| You have a slow provider and isdn4linux gives up dialing too early. | |
| Solution: | |
| Load the isdn module using the dialtimeout option. You can do this e.g. | |
| by adding a line like | |
| options isdn dialtimeout=15 | |
| to /etc/modprobe.d/gigaset.conf or a similar file. | |
| Problem: | |
| The isdnlog program emits error messages or just doesn't work. | |
| Solution: | |
| Isdnlog supports only the HiSax driver. Do not attempt to use it with | |
| other drivers such as Gigaset. | |
| Problem: | |
| You have two or more DECT data adapters (M101/M105) and only the | |
| first one you turn on works. | |
| Solution: | |
| Select Unimodem mode for all DECT data adapters. (see section 2.5.) | |
| Problem: | |
| Messages like this: | |
| usb_gigaset 3-2:1.0: Could not initialize the device. | |
| appear in your syslog. | |
| Solution: | |
| Check whether your M10x wireless device is correctly registered to the | |
| Gigaset base. (see section 2.7.) | |
| 3.2. Telling the driver to provide more information | |
| ---------------------------------------------- | |
| Building the driver with the "Gigaset debugging" kernel configuration | |
| option (CONFIG_GIGASET_DEBUG) gives it the ability to produce additional | |
| information useful for debugging. | |
| You can control the amount of debugging information the driver produces by | |
| writing an appropriate value to /sys/module/gigaset/parameters/debug, e.g. | |
| echo 0 > /sys/module/gigaset/parameters/debug | |
| switches off debugging output completely, | |
| echo 0x302020 > /sys/module/gigaset/parameters/debug | |
| enables a reasonable set of debugging output messages. These values are | |
| bit patterns where every bit controls a certain type of debugging output. | |
| See the constants DEBUG_* in the source file gigaset.h for details. | |
| The initial value can be set using the debug parameter when loading the | |
| module "gigaset", e.g. by adding a line | |
| options gigaset debug=0 | |
| to your module configuration file, eg. /etc/modprobe.d/gigaset.conf | |
| Generated debugging information can be found | |
| - as output of the command | |
| dmesg | |
| - in system log files written by your syslog daemon, usually | |
| in /var/log/, e.g. /var/log/messages. | |
| 3.3. Reporting problems and bugs | |
| --------------------------- | |
| If you can't solve problems with the driver on your own, feel free to | |
| use one of the forums, bug trackers, or mailing lists on | |
| http://sourceforge.net/projects/gigaset307x | |
| or write an electronic mail to the maintainers. | |
| Try to provide as much information as possible, such as | |
| - distribution | |
| - kernel version (uname -r) | |
| - gcc version (gcc --version) | |
| - hardware architecture (uname -m, ...) | |
| - type and firmware version of your device (base and wireless module, | |
| if any) | |
| - output of "lsusb -v" (if using an USB device) | |
| - error messages | |
| - relevant system log messages (it would help if you activate debug | |
| output as described in 3.2.) | |
| For help with general configuration problems not specific to our driver, | |
| such as isdn4linux and network configuration issues, please refer to the | |
| appropriate forums and newsgroups. | |
| 3.4. Reporting problem solutions | |
| --------------------------- | |
| If you solved a problem with our drivers, wrote startup scripts for your | |
| distribution, ... feel free to contact us (using one of the places | |
| mentioned in 3.3.). We'd like to add scripts, hints, documentation | |
| to the driver and/or the project web page. | |
| 4. Links, other software | |
| --------------------- | |
| - Sourceforge project developing this driver and associated tools | |
| http://sourceforge.net/projects/gigaset307x | |
| - Yahoo! Group on the Siemens Gigaset family of devices | |
| http://de.groups.yahoo.com/group/Siemens-Gigaset | |
| - Siemens Gigaset/T-Sinus compatibility table | |
| http://www.erbze.info/sinus_gigaset.htm | |
| 5. Credits | |
| ------- | |
| Thanks to | |
| Karsten Keil | |
| for his help with isdn4linux | |
| Deti Fliegl | |
| for his base driver code | |
| Dennis Dietrich | |
| for his kernel 2.6 patches | |
| Andreas Rummel | |
| for his work and logs to get unimodem mode working | |
| Andreas Degert | |
| for his logs and patches to get cx 100 working | |
| Dietrich Feist | |
| for his generous donation of one M105 and two M101 cordless adapters | |
| Christoph Schweers | |
| for his generous donation of a M34 device | |
| and all the other people who sent logs and other information. | |