web-dev-qa-db-fra.com

Comment "parler" au modem USB sous Linux?

J'ai un modem USB identifié sous Linux (Ubuntu 12.04) avec lsusb comme

Bus 001 Device 003: ID 0572:1329 Conexant Systems (Rockwell), Inc.

Comment parler à cet appareil (par exemple avec microcom, etc.?)? Quel périphérique dev dois-je utiliser? Il n'y a pas /dev/ttyUSBXXX disponible et juste un /dev/ttyACM0.

6
Alex

Si vous parlez vous entendez envoyer AT commandes sous la forme

echo "ATI" > /dev/usbDev

essayez ceci: http://brunomgalmeida.wordpress.com/2012/04/06/send-at-commands-to-usb-modem/

3
Bruno

Vous pouvez utiliser cu.

$ Sudo apt-get install cu

Vous pouvez vous connecter à votre modem avec:

$ cu -l ttyACM0

(avec: ttyACM0 étant le périphérique/dev/ttyACM0) Vous devriez obtenir une réponse:

connected

À ce stade, vous pouvez utiliser l’une des commandes standard AT, par exemple pour tester la numérotation:

ATDT 123-456-7890

Vous devez avoir défini votre ID utilisateur sur la numérotation de groupe pour obtenir la permission d'accéder au modem.

Vous pouvez quitter l'application cu avec "~". (point tilde).

Vous pouvez trouver d'autres commandes Hayese sur:

http://en.wikipedia.org/wiki/Hayes_command_set

4
L. D. James

Utilisez minicomname____, socatou screenname__:

socat - /dev/ttyUSB1 
minicom -D /dev/ttyUSB1
screen /dev/ttyUSB1

REMARQUE: J'ai utilisé le nom de périphérique réel /dev/ttyUSB1 au lieu de faux /dev/usbDev.

2
pevik

Je crois que la réponse que vous cherchez est la suivante: tilisation d’un modem USB avec un pilote Conexant dans (K) Ubuntu 11.10 (Oneiric) .

Choses importantes (extraites du site):

Quand j'ai branché un modem Conexant, j'ai exécuté

lsusb

et il a dit:

[...]

Bus 006 Device 002: ID 0572:1300 Conexant Systems (Rockwell), Inc. SoftK56 Data Fax Voice CARP

[...]

donc je savais que le modem HSF était reconnu par le système.

Comme j'avais déjà une connexion Internet, j'ai mis à jour le système

Sudo apt-get update && Sudo apt-get dist-upgrade

J'ai vérifié que je n'avais pas de pilotes Conexant précédents installés. Par exemple: j'ai exécuté

ls /usr/sbin/hsfconfig

et il a dit que ce fichier n'existait pas; si cela existait, j'aurais pensé que quelque chose était encore installé.

Je me suis assuré que j'avais "gcc" et "faire" prêt, en exécutant

Sudo apt-get install gcc make

Ensuite, j'ai exécuté les étapes décrites ici:

Sudo -s
cd /lib/modules/$(uname -r)/build/include/linux
ln -s ../generated/utsrelease.h
ln -s ../generated/autoconf.h
exit

J'ai préparé les fichiers pour la compilation du pilote, en exécutant

mkdir ~/conexant_modem
cd ~/conexant_modem

et si j'avais un système d'exploitation 64 bits, j'ai exécuté

wget http://linux.Dell.com/files/ubuntu/hardy/modem-drivers/hsf/hsfmodem-7.68.00.09x86_64oem.tar.gz
tar xzf hsfmodem-7.68.00.09x86_64oem.tar.gz
wget http://www.bargweb.net/images/2009/november/hsfmodem-7.80.02.05-DiacoEdition.Zip
unzip hsfmodem-7.80.02.05-DiacoEdition.Zip
cp -a hsfmodem-7.80.02.05-DiacoEdition/modules/imported/include/framewrk.h hsfmodem-7.68.00.09x86_64oem/modules/imported/include/framewrk.h
cp -a hsfmodem-7.80.02.05-DiacoEdition/modules/imported/include/osservices.h hsfmodem-7.68.00.09x86_64oem/modules/imported/include/osservices.h

sinon, si j'avais un système d'exploitation 32 bits, j'exécutais

wget http://linux.Dell.com/files/ubuntu/hardy/modem-drivers/hsf/hsfmodem-7.68.00.09oem.tar.gz
tar xzf hsfmodem-7.68.00.09oem.tar.gz
wget http://www.bargweb.net/images/2009/november/hsfmodem-7.80.02.05-DiacoEdition.Zip
unzip hsfmodem-7.80.02.05-DiacoEdition.Zip
cp -a hsfmodem-7.80.02.05-DiacoEdition/modules/imported/include/framewrk.h hsfmodem-7.68.00.09oem/modules/imported/include/framewrk.h
cp -a hsfmodem-7.80.02.05-DiacoEdition/modules/imported/include/osservices.h hsfmodem-7.68.00.09oem/modules/imported/include/osservices.h
A note for the curious ones: those "framewrk.h" and "osservices.h" files were the different ones between the directories "hsfmodem-7.68.00.09oem/modules/imported" and "hsfmodem-7.80.02.05-DiacoEdition/modules/imported".

Si j'avais un système d'exploitation 64 bits, j'exécutais

wget http://www.linuxant.com/drivers/hsf/full/archive/hsfmodem-7.80.02.06x86_64full/hsfmodem-7.80.02.06x86_64full.tar.gz

sinon, si j'avais un système d'exploitation 32 bits, j'exécutais

wget http://www.linuxant.com/drivers/hsf/full/archive/hsfmodem-7.80.02.06full/hsfmodem-7.80.02.06full.tar.gz

Une note pour les curieux: ce fichier était le plus récent de http://www.linuxant.com/drivers/hsf/full/downloads.php

Et puis, si j'avais un système d'exploitation 64 bits, j'exécutais

tar xzf hsfmodem-7.80.02.06x86_64full.tar.gz
rm -r hsfmodem-7.80.02.06x86_64full/modules/imported
cp -R hsfmodem-7.68.00.09x86_64oem/modules/imported hsfmodem-7.80.02.06x86_64full/modules/
cp -R hsfmodem-7.68.00.09x86_64oem/modules/imported hsfmodem-7.80.02.06x86_64full/modules/

sinon, si j'avais un système d'exploitation 32 bits, j'exécutais

tar xzf hsfmodem-7.80.02.06full.tar.gz
rm -r hsfmodem-7.80.02.06full/modules/imported
cp -R hsfmodem-7.68.00.09oem/modules/imported hsfmodem-7.80.02.06full/modules/
cp -R hsfmodem-7.68.00.09oem/modules/imported hsfmodem-7.80.02.06full/modules/

L'étape suivante consistait à nettoyer le répertoire actuel.

Si j'avais un système d'exploitation 64 bits, j'exécutais

rm -rf hsfmodem-7.68.00.09x86_64oem
rm -rf hsfmodem-7.80.02.05-DiacoEdition
rm hsfmodem-7.68.00.09x86_64oem.tar.gz
rm hsfmodem-7.80.02.05-DiacoEdition.Zip
rm hsfmodem-7.80.02.06x86_64full.tar.gz

sinon, si j'avais un système d'exploitation 32 bits, j'exécutais

rm -rf hsfmodem-7.68.00.09oem
rm -rf hsfmodem-7.80.02.05-DiacoEdition
rm hsfmodem-7.68.00.09oem.tar.gz
rm hsfmodem-7.80.02.05-DiacoEdition.Zip
rm hsfmodem-7.80.02.06full.tar.gz

Ensuite, j'ai dû modifier certains fichiers pour les adapter à la version 3.0.0 du noyau Linux. Si j'avais un système d'exploitation 64 bits, j'exécutais

cd hsfmodem-7.80.02.06x86_64full
xdg-open modules/GPL/serial_cnxt.c

sinon, si j'avais un système d'exploitation 32 bits, j'exécutais

cd hsfmodem-7.80.02.06full
xdg-open modules/GPL/serial_cnxt.c

et puis un éditeur de texte a été lancé. J'ai cherché la ficelle

#ifndef FOUND_UART_REGISTER_PORT

et ci-dessous j'ai trouvé la chaîne

static DECLARE_MUTEX(cnxt_port_sem);

J'ai supprimé cette dernière chaîne et y ai écrit

static DEFINE_SEMAPHORE(cnxt_port_sem);

et j'ai sauvegardé et fermé ce fichier. J'ai exécuté

xdg-open modules/osdiag.c

et puis un éditeur de texte a été lancé. J'ai cherché la ficelle

THIS_MODULE,

et ci-dessous j'ai trouvé la chaîne

.ioctl    = diag_ioctl,

J'ai supprimé cette chaîne et y ai écrit

.compat_ioctl = diag_ioctl,

et j'ai sauvegardé et fermé ce fichier. J'ai exécuté

xdg-open modules/osnvm.c

et puis un éditeur de texte a été lancé. J'ai cherché la ficelle

static LIST_HEAD(nvm_newinst_list);

et ci-dessous j'ai trouvé la chaîne

static DECLARE_MUTEX(nvmelem_writelist_sem);

J'ai supprimé cette dernière chaîne et y ai écrit

static DEFINE_SEMAPHORE(nvmelem_writelist_sem);

et j'ai sauvegardé et fermé ce fichier.

Une note pour les curieux: la source de ces modifications dans ces fichiers était http://www.openmamba.org/showfile.ht...l-2.6.37.patch

L'utilisateur nommé Chiaseth a aidé à expliquer les étapes que j'ai suivies de la manière suivante:

  1. J'ai exécuté

    xdg-open modules/osservices.c

et puis un éditeur de texte a été lancé. J'ai cherché la ficelle

#include <linux/smp_lock.h>

et j'ai supprimé cette chaîne, et y a écrit

#include <linux/mutex.h>
DEFINE_MUTEX(os_mutex);  // Define a mutex

Dans ce fichier, j'ai cherché les chaînes

unlock_kernel()

en les remplaçant tous par

mutex_unlock(&os_mutex)

En outre, dans ce fichier, j'ai cherché les chaînes

lock_kernel()

en les remplaçant tous par

mutex_lock(&os_mutex)

et j'ai sauvegardé et fermé ce fichier.

  1. J'ai exécuté

    xdg-open modules/osdcp.c

Dans ce fichier, j'ai cherché la chaîne

static spinlock_t dcp_lock = SPIN_LOCK_UNLOCKED;

en le remplaçant par

static DEFINE_SPINLOCK(dcp_lock);

et j'ai sauvegardé et fermé ce fichier.

  1. J'ai exécuté

    xdg-open modules/osdiag.c

Dans ce fichier, j'ai cherché la chaîne

static spinlock_t diag_lock = SPIN_LOCK_UNLOCKED;

en le remplaçant par

static DEFINE_SPINLOCK(diag_lock);

et j'ai sauvegardé et fermé ce fichier.

  1. J'ai exécuté

    xdg-open modules/osfloat.c

Dans ce fichier, j'ai cherché la chaîne

static spinlock_t fpstates_lock __attribute__((unused)) = SPIN_LOCK_UNLOCKED;

en le remplaçant par

static DEFINE_SPINLOCK(fpstates_lock);

et j'ai sauvegardé et fermé ce fichier.

  1. J'ai exécuté

    xdg-open modules/osservices.c

Dans ce fichier, j'ai cherché la chaîne

static spinlock_t atomic_lock __attribute__((unused)) = SPIN_LOCK_UNLOCKED;

en le remplaçant par

static DEFINE_SPINLOCK(atomic_lock);

et j'ai sauvegardé et fermé ce fichier.

  1. J'ai exécuté

    xdg-open modules/GPL/oscompat.h

Dans ce fichier, j'ai cherché la chaîne

static spinlock_t tqueue_lock __attribute__((unused)) = SPIN_LOCK_UNLOCKED;

en le remplaçant par

static DEFINE_SPINLOCK(tqueue_lock);

et j'ai sauvegardé et fermé ce fichier.

Enfin ... si exécuté

Sudo make install
Sudo hsfconfig

Il a demandé "Où se trouve le répertoire de construction de la source linux qui correspond à votre noyau en cours d'exécution?", Puis j'ai simplement appuyé sur la touche Entrée pour accepter la réponse par défaut. J'ai également accepté la réponse par défaut dans d'autres questions.

Enfin, la commande a signalé que

The /dev/modem alias (symlink) points to ttySHSF0

J'ai exécuté

dmesg

et à la fin j'ai vu

[59190.782005] hsfengine: module license 'see LICENSE file distributed with driver' taints kernel.
[59190.782011] Disabling lock debugging due to kernel taint
[59192.564398] ttySHSF0 at MMIO 0x0 (irq = 0) is a Conexant HSF softmodem (USB-0572:1300)
[59192.600274] usbcore: registered new interface driver hsfusbcd2
[59194.416241] usbcore: deregistering interface driver hsfusbcd2
[59194.600064] usb 6-1: reset full speed USB device using uhci_hcd and address 2
[59194.811746] cnxthsf_DcpDestroy: units still active, waiting..
[59194.811764] cnxthsf_DcpDestroy: units still active, waiting..
[59194.811778] cnxthsf_DcpDestroy: units still active, waiting..
[59196.967466] ttySHSF0 at MMIO 0x0 (irq = 0) is a Conexant HSF softmodem (USB-0572:1300)
[59196.994150] usbcore: registered new interface driver hsfusbcd2

ce qui signifie, entre autres choses, que le modem USB a été détecté à /dev/ttySHSF0.

Remarque: comme ils l'ont dit dans https://help.ubuntu.com/community/Di...Howto/Conexant : "ne supprimez ni ne déplacez l'arbre source [dans notre cas: ~/conexant_modem ] de votre système après ces étapes, il sera nécessaire de désinstaller et de corriger le pilote. "

J'ai lancé kppp (par exemple) et configuré une nouvelle "connexion" en spécifiant que le modem était à /dev/ttySHSF0. Vous pouvez également utiliser un programme tel que efax-gtk pour envoyer des télécopies via le modem.

1
LnxSlck

Je sais que vous pouvez utiliser deux logiciels pour envoyer des commandes AT (Attention) à votre modem: un terminal de port série et un autre, Cutecom.

0
Aman Sharma
  1. Assurez-vous que votre modem USB est correctement inséré dans tout port USB disponible de votre ordinateur Ubuntu.

  2. Cliquez sur l'icône de réseau et sélectionnez Edit connections. Cela lancera l'utilitaire de gestion de réseau d'Ubuntu.

  3. Sélectionnez le nom du modem USB dans la liste des connexions disponibles, puis cliquez sur Properties..

  4. Cliquez sur Enable this Connection pour indiquer à Ubuntu que vous souhaitez utiliser ce périphérique pour vous connecter à des réseaux Internet.

  5. Cliquez sur OK. Votre modem USB va maintenant être correctement connecté à Ubuntu et configuré, et vous pouvez maintenant l'utiliser pour vous connecter à Internet.

Source du tutoriel ici

0
Frantique