Forum Linux.embarqué configuration de liaison radio (3G, 4G, ...)

Posté par . Licence CC by-sa.
1
27
mar.
2018

Bonjour.

J'ai besoin de configurer une connection de type 3/4G (on passe par ce modem sur un système «embarqué» (je ne suis pas persuadé que le terme colle réellement à mon cas, mais bon, en gros, pas d'accès physique, pas d'IHM, et si faut rebooter on croise les doigts pour que tout marche direct au reboot).
J'ai hésité à mettre cette question dans la section Debian/Ubuntu, puisque c'est une Debian Stretch qui est prévue pour installation, mais d'un autre côté j'aurai aussi pu mettre dans Linux/général, puisque je doute que les manipulations à faire soient spécifiques à une distro…

J'ai pas mal fouiné, mais je n'arrive pas à comprendre comment c'est censé fonctionner.
À la base, on était censés utiliser un autre module (même marque, mais module 3G (MU709s à priori) et j'avais réussi à le faire fonctionner «par magie» (comprendre: apt-get install ppp, 2-3 configurations pas trop comprises, ajout des lignes pour la nouvelle interface dans /etc/network/interfaces, et manuellement, à chaque boot faire ifup gprs (gprs, le nom donné à pppd, de ce que j'ai compris). Ça ne me convenait pas trop intellectuellement parlant, mais au moins j'arrivait à le faire marcher.

La, j'imagine que les paramètres sont différents, vu que ça ne semble pas marcher.
Du coup, je me demandais si quelqu'un aurait un lien vers une ressource qui explique comment ce genre de choses se configurent, comment ça fonctionne réellement?
D'une part, il faut que ça marche, mais si en plus je pouvais comprendre comment et pourquoi, ça serait vraiment super.

Par rapport aux diverses lectures que j'ai faites, il semble y avoir pas mal de référence à des «commandes AT», qu'il faudrait utiliser en utilisant un terminal «série» (type minicom) pour accéder à l'un des périphériques série exposés dans /dev, par exemple /dev/ttyUSB0, et supposément certaines commandes permettent de configurer le modem.

À ce stade, j'ai pas mal de points qui me bloquent:

  • déjà, je reconnais ne pas savoir utiliser minicom. Bon, ça, à la rigueur… je pense que je serais capable de me démerder je pense…
  • ensuite, je n'arrive pas à déterminer comment savoir sur quel fichier il faut se connecter… au pifomètre?
  • pour finir, je ne connais pas du tout les commandes AT et encore moins le monde de la téléphonie.
  • pour finir, comment ça fonctionne pour que la nouvelle interface réseau soit listée par ip link?
  • # commandes AT

    Posté par . Évalué à 3.

    Commence par regarder les documents :

    Ils indiquent précisément des tas de choses intéressantes :

    • comment le modem s'interface avec l'application (USB, etc.)
    • syntaxe des commandes AT

    Ensuite, une session de test typique serait :

    # microcom -s 115200 /dev/ttyACM0
    AT+CPIN=1234
    OK
    AT+COPS=0
    OK
    

    Les lignes AT+…. sont des commandes que tu tapes. Les autres sont les réponses du modem.
    Les doc de référence des commandes AT te donne des explications et exemples.

    • [^] # Re: commandes AT

      Posté par (page perso) . Évalué à 2.

      Et pour éviter de te fader ce genre de choses à la main, j'imagine qu'un modemmanager est une bonne idée ?

      Debian Consultant @ DEBAMAX

      • [^] # Re: commandes AT

        Posté par . Évalué à 2.

        À voir, même si j'essaie de garder un système aussi petit que possible (pour l'espace disque d'une part, mais surtout pour la bande passante en cas de mise à jour).
        M'enfin, si ça peut marcher rapidement, le temps que j'arrive à comprendre mieux comment ça marche en dessous…

  • # Au cas ou

    Posté par . Évalué à 3.

    Salut,

    J'ai dans mes notes perso, quelques trucs de mon modem 3g avec une Debian.
    Je te colle ça en vrac mais globalement c'est la config de wvdial.
    Je ne l'utilise plus mais a l'époque un lancement pas crontab en @reboot et j'avais la connexion.

    pour lister les ports du modem

    for n in `ls /sys/class/*/*{ACM,wdm,usb0}*/device/interface`;do echo $(echo $n|awk -F '/' '{print $5}') : $(cat $n);done
      ttyACM0 : F5521gw Mobile Broadband Modem
      ttyACM1 : F5521gw Mobile Broadband Data Modem
      ttyACM2 : F5521gw Mobile Broadband GPS Port
      cdc-wdm0 : F5521gw Mobile Broadband Device Management
      cdc-wdm1 : F5521gw Mobile Broadband USIM Port

    Fichier de configuration /etc/wvdial.conf:
    Contient la config pour une sim SFR 3G, Free Mobile 3G et Free Mobile via GSM

    [Dialer gps]
    Modem = /dev/ttyACM2
    Init1 = AT*E2GPSCTL=1,5,1
    Init2 = AT*E2GPSNPD
    
    [Dialer on]
    Modem = /dev/ttyACM0
    Init1 = AT+CFUN=1
    
    [Dialer off]
    Modem = /dev/ttyACM0
    Init1 = AT+CFUN=4
    
    [Dialer sig]
    Modem = /dev/ttyACM1
    Init1 = AT+CSQ
    
    [Dialer free]
    Modem = /dev/ttyACM1
    Init1 = AT
    Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
    Init3 = AT+CGDCONT=1,"IP","free"
    Init4 = AT+CSQ
    Stupid Mode = 1
    Modem Type = USB Modem
    Baud = 460800
    ISDN = 0
    Phone = *99#
    Password = free
    Username = free
    
    [Dialer connect]
    Modem = /dev/ttyACM1
    Init1 = AT 
    Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
    Init3 = AT+CGDCONT=1,"IP","websfr"
    Init4 = AT+CSQ
    Stupid Mode = 1
    Modem Type = USB Modem
    Baud = 460800
    ISDN = 0
    Phone = *99#
    Password = vodafone
    Username = vodafone
    
    [Dialer gsm]
    Init1 = ATZ
    Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
    Init3 = AT+CGDCONT=1,"IP","free"
    Modem Type = Analog Modem
    ISDN = 0
    Phone = *99#
    New PPPD = yes
    Modem = /dev/rfcomm0
    Username = free
    Password = free
    Baud = 460800
    
    Liste de correspondances concernant le signal 3G:
    
    2       -109    Marginal
    3       -107    Marginal
    4       -105    Marginal
    5       -103    Marginal
    6       -101    Marginal
    7       -99     Marginal
    8       -97     Marginal
    9       -95     Marginal
    10      -93     OK
    11      -91     OK
    12      -89     OK
    13      -87     OK
    14      -85     OK
    15      -83     Good
    16      -81     Good
    17      -79     Good
    18      -77     Good
    19      -75     Good
    20      -73     Excellent
    21      -71     Excellent
    22      -69     Excellent
    23      -67     Excellent
    24      -65     Excellent
    25      -63     Excellent
    26      -61     Excellent
    27      -59     Excellent
    28      -57     Excellent
    29      -55     Excellent
    30      -53     Excellent
    • [^] # Re: Au cas ou

      Posté par . Évalué à 3.

      Merci pour les infos, mais il semble bien que je ne vais pas pouvoir utiliser wvdial:

      wvdial: utils/wvtask.cc:303: static int WvTaskMan::yield(int): Assertion `*current_task->stack_magic == WVTASK_MAGIC' failed.

      Je vais voir pour reporter ça quand j'aurais 5 minutes du coup.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.