I have a 3G modem on my BeagleBone Linux system that supports GSM0710 multiplexing (i.e. can create >= 2 virtual serial ports that connect to the physical modem port, which can then be used to run ppp on one, and AT commands the other).

I'm trying to use the ldattach command to get this to work, as described in https://www.kernel.org/doc/Documentation/serial/n_gsm.txt.

So I run these commands as root:

ldattach -d GSM0710 /dev/ttyO2             
ldattach: opened /dev/ttyO2                                                     
ldattach: set to raw 0 ---: cflag=0x1cb2                                        
ldattach: line discipline set to 21

Then create some virtual serial devices with:

MAJOR=`cat /proc/devices |grep gsmtty | awk '{print $1}`
for i in `seq 1 4`; do
    mknod /dev/ttygsm$i c $MAJOR $i

However, when I try to connect to one of the /dev/ttygsm ports, I always get this error "can't open /dev/ttygsm1: Level 2 halted".

Does anyone know what this error means, and how to get the above muxing scheme to work?

Thanks, Fred

  • Tip: grep gsmtty | awk '{print $1} can be shortened to awk '/gsmtty/{print $1}.
    – hlovdal
    Mar 25, 2017 at 11:57

1 Answer 1


Did you issue a command like AT+CMUX=0 to the modem to trigger the mux in the first place?

The mux stuff isn't working, that's why you're getting that error message. The kernel driver and AT command module aren't correctly communicating...

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.