Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 11 additions & 7 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
CC=gcc
CFLAGS=-Wall

all: cmux
CC?=gcc
CFLAGS?=-Wall
DESTDIR?=/
PREFIX?=usr

program: cmux.c
cmux: cmux.c
$(CC) $(CFLAGS) cmux.c -o cmux

install: cmux
install -m 0755 cmux $(DESTDIR)/$(PREFIX)/bin/cmux

clean:
rm -f cmux
-@rm cmux

run: cmux
./cmux
.PHONY: install clean
34 changes: 25 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
Cmux
====
This program enables GSM 0710 multiplexing using linux n_gsm line dicipline.
Supported are also SIM900 and Telit modules.

How it works
-------
Expand All @@ -12,29 +13,40 @@ This program :
* Daemonizes and waits for signal
* Removes the virtual TTYs

In order to activate the CMUX mode the program sends some AT commands. Theses commands are mainly vendor specific and should be adapted to your own modem. The example in this code works for the Quectel M95 GSM module.
In order to activate the CMUX mode the program sends some AT commands.
Theses commands are mainly vendor specific and should be adapted to your own modem.
The example in this code works for the Quectel M95 GSM module.

How to
------
* In order to run this program you should have `n_gsm` module built for your linux kernel and loaded. Use `modprobe n_gsm` to load it. If it fails you probably have to build the kernel module by yourself.
* In order to run this program you should have `n_gsm` module built for your linux kernel and loaded.
Use `modprobe n_gsm` to load it. If it fails you probably have to build the kernel module by yourself.
* Change the defined options in `cmux.c`:

```c
/* serial port of the modem */
#define SERIAL_PORT "/dev/ttyS1"
/* line speed */
#define LINE_SPEED B115200
```
$ ./cmux -h
Usage: cmux --device /dev/ttyUSB0 --speed 115200

--type <type> SIM900, TELIT or default. (Default: default)
--device <name> Serial device name. (Default: /dev/ttyUSB0)
--speed <rate> Serial device line speed. (Default: 115200)
--mtu <number> MTU size. (Default: 512)
--debug [1|0] Enable debugging. (Default: 1)
--daemon [1|0] Fork into background. (Default: 1)
--driver <name> Driver to use. (Default: gsmtty)
--base <name> Base name for the nodes. (Default: /dev/ttyGSM)
--nodes [0-4] Number of nodes to create. (Default: 1)
```

* Change the AT commands set to fit your modem in `cmux.c`.
* Make and run the program.
* Call make and run the program.

```
make
./cmux
```

It will create four devices:
It will create up to four devices:
* /dev/ttyGSM1
* /dev/ttyGSM2
* /dev/ttyGSM3
Expand All @@ -45,3 +57,7 @@ You should now be able to access your modem with four TTYs and both use `ppp` an
Links
-----
This program is mainly an actual implementation of [GSM 0710 tty multiplexor HOWTO](http://stuff.mit.edu/afs/sipb/contrib/linux/Documentation/serial/n_gsm.txt)

License
-----
CC0
Loading