Commit 64f16603eae17e869d5fc8a60ae987394190e639
Committed by
David S. Miller
1 parent
073886ff23
Exists in
master
and in
39 other branches
gigaset: documentation amendments
Various additions and improvements to the Gigaset driver's README file, and added comments to its userspace visible include file. Signed-off-by: Tilman Schmidt <tilman@imap.cc> Signed-off-by: David S. Miller <davem@davemloft.net>
Showing 2 changed files with 106 additions and 32 deletions Side-by-side Diff
Documentation/isdn/README.gigaset
... | ... | @@ -68,22 +68,38 @@ |
68 | 68 | for troubleshooting or to pass module parameters. |
69 | 69 | |
70 | 70 | The module ser_gigaset provides a serial line discipline N_GIGASET_M101 |
71 | - which drives the device through the regular serial line driver. It must | |
72 | - be attached to the serial line to which the M101 is connected with the | |
73 | - ldattach(8) command (requires util-linux-ng release 2.14 or later), for | |
74 | - example: | |
75 | - ldattach GIGASET_M101 /dev/ttyS1 | |
71 | + which uses the regular serial port driver to access the device, and must | |
72 | + therefore be attached to the serial device to which the M101 is connected. | |
73 | + The ldattach(8) command (included in util-linux-ng release 2.14 or later) | |
74 | + can be used for that purpose, for example: | |
75 | + ldattach GIGASET_M101 /dev/ttyS1 | |
76 | 76 | This will open the device file, attach the line discipline to it, and |
77 | 77 | then sleep in the background, keeping the device open so that the line |
78 | 78 | discipline remains active. To deactivate it, kill the daemon, for example |
79 | 79 | with |
80 | - killall ldattach | |
80 | + killall ldattach | |
81 | 81 | before disconnecting the device. To have this happen automatically at |
82 | 82 | system startup/shutdown on an LSB compatible system, create and activate |
83 | 83 | an appropriate LSB startup script /etc/init.d/gigaset. (The init name |
84 | 84 | 'gigaset' is officially assigned to this project by LANANA.) |
85 | 85 | Alternatively, just add the 'ldattach' command line to /etc/rc.local. |
86 | 86 | |
87 | + The modules accept the following parameters: | |
88 | + | |
89 | + Module Parameter Meaning | |
90 | + | |
91 | + gigaset debug debug level (see section 3.2.) | |
92 | + | |
93 | + startmode initial operation mode (see section 2.5.): | |
94 | + bas_gigaset ) 1=ISDN4linux/CAPI (default), 0=Unimodem | |
95 | + ser_gigaset ) | |
96 | + usb_gigaset ) cidmode initial Call-ID mode setting (see section | |
97 | + 2.5.): 1=on (default), 0=off | |
98 | + | |
99 | + Depending on your distribution you may want to create a separate module | |
100 | + configuration file /etc/modprobe.d/gigaset for these, or add them to a | |
101 | + custom file like /etc/modprobe.conf.local. | |
102 | + | |
87 | 103 | 2.2. Device nodes for user space programs |
88 | 104 | ------------------------------------ |
89 | 105 | The device can be accessed from user space (eg. by the user space tools |
90 | 106 | |
91 | 107 | |
... | ... | @@ -93,12 +109,49 @@ |
93 | 109 | - /dev/ttyGU0 for M105 (USB data boxes) |
94 | 110 | - /dev/ttyGB0 for the base driver (direct USB connection) |
95 | 111 | |
96 | - You can also select a "default device" which is used by the frontends when | |
112 | + If you connect more than one device of a type, they will get consecutive | |
113 | + device nodes, eg. /dev/ttyGU1 for a second M105. | |
114 | + | |
115 | + You can also set a "default device" for the user space tools to use when | |
97 | 116 | no device node is given as parameter, by creating a symlink /dev/ttyG to |
98 | 117 | one of them, eg.: |
99 | 118 | |
100 | - ln -s /dev/ttyGB0 /dev/ttyG | |
119 | + ln -s /dev/ttyGB0 /dev/ttyG | |
101 | 120 | |
121 | + The devices accept the following device specific ioctl calls | |
122 | + (defined in gigaset_dev.h): | |
123 | + | |
124 | + ioctl(int fd, GIGASET_REDIR, int *cmd); | |
125 | + If cmd==1, the device is set to be controlled exclusively through the | |
126 | + character device node; access from the ISDN subsystem is blocked. | |
127 | + If cmd==0, the device is set to be used from the ISDN subsystem and does | |
128 | + not communicate through the character device node. | |
129 | + | |
130 | + ioctl(int fd, GIGASET_CONFIG, int *cmd); | |
131 | + (ser_gigaset and usb_gigaset only) | |
132 | + If cmd==1, the device is set to adapter configuration mode where commands | |
133 | + are interpreted by the M10x DECT adapter itself instead of being | |
134 | + forwarded to the base station. In this mode, the device accepts the | |
135 | + commands described in Siemens document "AT-Kommando Alignment M10x Data" | |
136 | + for setting the operation mode, associating with a base station and | |
137 | + querying parameters like field strengh and signal quality. | |
138 | + Note that there is no ioctl command for leaving adapter configuration | |
139 | + mode and returning to regular operation. In order to leave adapter | |
140 | + configuration mode, write the command ATO to the device. | |
141 | + | |
142 | + ioctl(int fd, GIGASET_BRKCHARS, unsigned char brkchars[6]); | |
143 | + (usb_gigaset only) | |
144 | + Set the break characters on an M105's internal serial adapter to the six | |
145 | + bytes stored in brkchars[]. Unused bytes should be set to zero. | |
146 | + | |
147 | + ioctl(int fd, GIGASET_VERSION, unsigned version[4]); | |
148 | + Retrieve version information from the driver. version[0] must be set to | |
149 | + one of: | |
150 | + - GIGVER_DRIVER: retrieve driver version | |
151 | + - GIGVER_COMPAT: retrieve interface compatibility version | |
152 | + - GIGVER_FWBASE: retrieve the firmware version of the base | |
153 | + Upon return, version[] is filled with the requested version information. | |
154 | + | |
102 | 155 | 2.3. ISDN4linux |
103 | 156 | ---------- |
104 | 157 | This is the "normal" mode of operation. After loading the module you can |
105 | 158 | |
106 | 159 | |
107 | 160 | |
... | ... | @@ -113,16 +166,25 @@ |
113 | 166 | Connection State: 0, Response: -1 |
114 | 167 | gigaset_process_response: resp_code -1 in ConState 0 ! |
115 | 168 | Timeout occurred |
116 | - you might need to use unimodem mode. (see section 2.5.) | |
169 | + you probably need to use unimodem mode. (see section 2.5.) | |
117 | 170 | |
118 | 171 | 2.4. CAPI |
119 | 172 | ---- |
120 | 173 | If the driver is compiled with CAPI support (kernel configuration option |
121 | 174 | GIGASET_CAPI, experimental) it can also be used with CAPI 2.0 kernel and |
122 | - user space applications. ISDN4Linux is supported in this configuration | |
175 | + user space applications. For user space access, the module capi.ko must | |
176 | + be loaded. The capiinit command (included in the capi4k-utils package) | |
177 | + does this for you. | |
178 | + | |
179 | + The CAPI variant of the driver supports legacy ISDN4Linux applications | |
123 | 180 | via the capidrv compatibility driver. The kernel module capidrv.ko must |
124 | - be loaded explicitly ("modprobe capidrv") if needed. | |
181 | + be loaded explicitly with the command | |
182 | + modprobe capidrv | |
183 | + if needed, and cannot be unloaded again without unloading the driver | |
184 | + first. (These are limitations of capidrv.) | |
125 | 185 | |
186 | + The note about unimodem mode in the preceding section applies here, too. | |
187 | + | |
126 | 188 | 2.5. Unimodem mode |
127 | 189 | ------------- |
128 | 190 | This is needed for some devices [e.g. SX100] as they have problems with |
... | ... | @@ -134,9 +196,14 @@ |
134 | 196 | You can switch back using |
135 | 197 | gigacontr --mode isdn |
136 | 198 | |
137 | - You can also load the driver using e.g. | |
138 | - modprobe usb_gigaset startmode=0 | |
139 | - to prevent the driver from starting in "isdn4linux mode". | |
199 | + You can also put the driver directly into Unimodem mode when it's loaded, | |
200 | + by passing the module parameter startmode=0 to the hardware specific | |
201 | + module, e.g. | |
202 | + modprobe usb_gigaset startmode=0 | |
203 | + or by adding a line like | |
204 | + options usb_gigaset startmode=0 | |
205 | + to an appropriate module configuration file, like /etc/modprobe.d/gigaset | |
206 | + or /etc/modprobe.conf.local. | |
140 | 207 | |
141 | 208 | In this mode the device works like a modem connected to a serial port |
142 | 209 | (the /dev/ttyGU0, ... mentioned above) which understands the commands |
... | ... | @@ -164,9 +231,8 @@ |
164 | 231 | |
165 | 232 | options ppp_async flag_time=0 |
166 | 233 | |
167 | - to /etc/modprobe.conf. If your distribution has some local module | |
168 | - configuration file like /etc/modprobe.conf.local, | |
169 | - using that should be preferred. | |
234 | + to an appropriate module configuration file, like /etc/modprobe.d/gigaset | |
235 | + or /etc/modprobe.conf.local. | |
170 | 236 | |
171 | 237 | 2.6. Call-ID (CID) mode |
172 | 238 | ------------------ |
173 | 239 | |
... | ... | @@ -189,12 +255,13 @@ |
189 | 255 | settings (CID mode). |
190 | 256 | - If you have several DECT data devices (M10x) which you want to use |
191 | 257 | in turn, select Unimodem mode by passing the parameter "cidmode=0" to |
192 | - the driver ("modprobe usb_gigaset cidmode=0" or modprobe.conf). | |
258 | + the appropriate driver module (ser_gigaset or usb_gigaset). | |
193 | 259 | |
194 | 260 | If you want both of these at once, you are out of luck. |
195 | 261 | |
196 | - You can also use /sys/class/tty/ttyGxy/cidmode for changing the CID mode | |
197 | - setting (ttyGxy is ttyGU0 or ttyGB0). | |
262 | + You can also use the tty class parameter "cidmode" of the device to | |
263 | + change its CID mode while the driver is loaded, eg. | |
264 | + echo 0 > /sys/class/tty/ttyGU0/cidmode | |
198 | 265 | |
199 | 266 | 2.7. Unregistered Wireless Devices (M101/M105) |
200 | 267 | ----------------------------------------- |
... | ... | @@ -208,7 +275,7 @@ |
208 | 275 | driver. In that situation, a restricted set of functions is available |
209 | 276 | which includes, in particular, those necessary for registering the device |
210 | 277 | to a base or for switching it between Fixed Part and Portable Part |
211 | - modes. | |
278 | + modes. See the gigacontr(8) manpage for details. | |
212 | 279 | |
213 | 280 | 3. Troubleshooting |
214 | 281 | --------------- |
... | ... | @@ -222,9 +289,7 @@ |
222 | 289 | |
223 | 290 | options isdn dialtimeout=15 |
224 | 291 | |
225 | - to /etc/modprobe.conf. If your distribution has some local module | |
226 | - configuration file like /etc/modprobe.conf.local, | |
227 | - using that should be preferred. | |
292 | + to /etc/modprobe.d/gigaset, /etc/modprobe.conf.local or a similar file. | |
228 | 293 | |
229 | 294 | Problem: |
230 | 295 | Your isdn script aborts with a message about isdnlog. |
... | ... | @@ -264,7 +329,8 @@ |
264 | 329 | The initial value can be set using the debug parameter when loading the |
265 | 330 | module "gigaset", e.g. by adding a line |
266 | 331 | options gigaset debug=0 |
267 | - to /etc/modprobe.conf, ... | |
332 | + to your module configuration file, eg. /etc/modprobe.d/gigaset or | |
333 | + /etc/modprobe.conf.local. | |
268 | 334 | |
269 | 335 | Generated debugging information can be found |
270 | 336 | - as output of the command |
include/linux/gigaset_dev.h
... | ... | @@ -16,16 +16,24 @@ |
16 | 16 | |
17 | 17 | #include <linux/ioctl.h> |
18 | 18 | |
19 | +/* The magic IOCTL value for this interface. */ | |
19 | 20 | #define GIGASET_IOCTL 0x47 |
20 | 21 | |
21 | -#define GIGVER_DRIVER 0 | |
22 | -#define GIGVER_COMPAT 1 | |
23 | -#define GIGVER_FWBASE 2 | |
22 | +/* enable/disable device control via character device (lock out ISDN subsys) */ | |
23 | +#define GIGASET_REDIR _IOWR(GIGASET_IOCTL, 0, int) | |
24 | 24 | |
25 | -#define GIGASET_REDIR _IOWR (GIGASET_IOCTL, 0, int) | |
26 | -#define GIGASET_CONFIG _IOWR (GIGASET_IOCTL, 1, int) | |
27 | -#define GIGASET_BRKCHARS _IOW (GIGASET_IOCTL, 2, unsigned char[6]) //FIXME [6] okay? | |
28 | -#define GIGASET_VERSION _IOWR (GIGASET_IOCTL, 3, unsigned[4]) | |
25 | +/* enable adapter configuration mode (M10x only) */ | |
26 | +#define GIGASET_CONFIG _IOWR(GIGASET_IOCTL, 1, int) | |
27 | + | |
28 | +/* set break characters (M105 only) */ | |
29 | +#define GIGASET_BRKCHARS _IOW(GIGASET_IOCTL, 2, unsigned char[6]) | |
30 | + | |
31 | +/* get version information selected by arg[0] */ | |
32 | +#define GIGASET_VERSION _IOWR(GIGASET_IOCTL, 3, unsigned[4]) | |
33 | +/* values for GIGASET_VERSION arg[0] */ | |
34 | +#define GIGVER_DRIVER 0 /* get driver version */ | |
35 | +#define GIGVER_COMPAT 1 /* get interface compatibility version */ | |
36 | +#define GIGVER_FWBASE 2 /* get base station firmware version */ | |
29 | 37 | |
30 | 38 | #endif |