{"id":4529,"date":"2020-11-05T17:57:50","date_gmt":"2020-11-05T16:57:50","guid":{"rendered":"http:\/\/bitacora.eniac2000.com\/?p=4529"},"modified":"2020-11-05T17:57:50","modified_gmt":"2020-11-05T16:57:50","slug":"configuracion-de-un-modem-3g4g-hsdpa-en-armbian-mediante-una-sim-de-pepephone","status":"publish","type":"post","link":"https:\/\/bitacora.eniac2000.com\/?p=4529","title":{"rendered":"Configuraci\u00f3n de un m\u00f3dem 3G\/4G\/HSDPA en Armbian mediante una SIM de Pepephone"},"content":{"rendered":"<p>Estoy trabajando en un proyecto IoT que implica el que un dispositivo ARM (en mi caso, una Orange Pi Zero) sea capaz de tener conectividad a Internet en un entorno aislado, sin WiFi o conexi\u00f3n cableada. Para ello, la mejor manera que he encontrado es dotar al mismo de una conexi\u00f3n 3G\/4G mediante una tarjeta SIM de un operador de telefon\u00eda. En mi caso, Pepephone. A diferencia de otros dispositivos que disponen de un lector de tarjetas SIM, la Orange Pi Zero no dispone del mismo, para lo cual es preciso hacer uso de un m\u00f3dem USB. He utilizado un modelo gen\u00e9rico, un <a href=\"https:\/\/es.aliexpress.com\/item\/32860631296.html?spm=a2g0s.9042311.0.0.749963c0nV36Pf\" target=\"_blank\">HSDPA 3G que se puede encontrar por unos pocos euros en Aliexpress<\/a>. Estos dispositivos vienen de casa con los drivers necesarios para hacerlos funcionar en diversas versiones de Windows, pero no cuentan con soporte oficial para Linux. Sin embargo, no es complicado hacerlos funcionar. A continuaci\u00f3n detallo los pasos para ello.<\/p>\n<figure id=\"attachment_4530\" aria-describedby=\"caption-attachment-4530\" style=\"width: 400px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2020\/11\/IMG_20201105_171736502.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2020\/11\/IMG_20201105_171736502-400x176.jpg\" alt=\"Orange Pi Zero con m\u00f3dem USB. El otro dispositivo es un receptor Zigbee\" title=\"Orange Pi Zero con m\u00f3dem USB. El otro dispositivo es un receptor Zigbee\" width=\"400\" height=\"176\" class=\"size-medium wp-image-4530\" \/><\/a><figcaption id=\"caption-attachment-4530\" class=\"wp-caption-text\">Orange Pi Zero con m\u00f3dem USB. El otro dispositivo es un receptor Zigbee<\/figcaption><\/figure>\n<p>En primer lugar, estoy haciendo uso de una <a href=\"https:\/\/www.armbian.com\/orange-pi-zero\/\" target=\"_blank\">Orange Pi Zero con sistema operativo Armbian<\/a>. En el momento en que escribo esto la versi\u00f3n publicada, y que estoy utilizando, es la 20.08.1, versi\u00f3n de kernel 5.8.5. Sobre esta versi\u00f3n del sistema operativo, para hacer funcionar el m\u00f3dem USB, hay que instalar dos aplicaciones:<\/p>\n<ul>\n<li><a href=\"http:\/\/https:\/\/www.draisberghof.de\/usb_modeswitch\/\" target=\"_blank\">USB_ModeSwitch<\/a>: Permite que el sistema operativo reconozca el m\u00f3dem USB como tal, y no como un dispositivo de almacenamiento g\u00e9nerico por USB. El mismo se puede instalar en el caso de Debian en general, y Armbian en particular, desde los repositorios oficiales.<\/li>\n<li><a href=\"https:\/\/es.wikipedia.org\/wiki\/Wvdial\" target=\"_blank\">Wvdial<\/a>: Utilidad para realizar la conexi\u00f3n a Internet mediante m\u00f3dem, que levanta una interfaz de red ppp (Diox, ni a\u00f1os que no creaba interfaces de red de este tipo). Tiene la ventaja de que se configura y ejecuta completamente desde l\u00ednea de comandos, por lo que no es necesario entorno gr\u00e1fico.<\/li>\n<\/ul>\n<p><strong>USB_ModeSwitch<\/strong><\/p>\n<p>La configuraci\u00f3n de USB_ModeSwitch no tiene misterio. Dado que la aplicaci\u00f3n est\u00e1 recogida en los repositorios oficiales de Debian, basta con instalar los dos paquetes correspondientes (usb-modeswitch y usb-modeswitch-data) utilizando apt. En funci\u00f3n del dispositivo del que hagas uso, con esto deber\u00eda bastar para que tu m\u00f3dem USB sea reconocido, pero a veces las cosas se complican un poco. Como en mi caso. <img src=\"https:\/\/bitacora.eniac2000.com\/wp-includes\/images\/smilies\/mrgreen.png\" alt=\":mrgreen:\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/> El dispositivo que yo uso se identifica a s\u00ed mismo inicialmente como un dispositivo de almacenamiento masivo. Al hacer un <em>lsusb<\/em> aparece identificado de la siguiente manera: <em>Bus 003 Device 011: ID 05c6:1000 Qualcomm, Inc. Mass Storage Device<\/em>. Es necesario <a href=\"http:\/\/https:\/\/www.draisberghof.de\/usb_modeswitch\/bb\/viewtopic.php?f=3&#038;t=2779\" target=\"_blank\">trastear<\/a> <a href=\"https:\/\/www.draisberghof.de\/usb_modeswitch\/bb\/viewtopic.php?f=3&#038;t=2565\" target=\"_blank\">un poco<\/a> para que se muestre en el sistema como un m\u00f3dem USB. Para ello:<\/p>\n<ul>\n<li>Asegurarse de tener instalada la tarjeta SIM. Sin ella, el dispositivo nunca se mostrar\u00e1 como un m\u00f3dem.<\/li>\n<li>Comprobar que el dispositivo pasa a identificarse como un m\u00f3dem con el comando <em>\/usr\/sbin\/usb_modeswitch -W -v 05c6 -p 1000 -K<\/em>. Si pasa a identificarse con algo similar a esto, <em>Bus 003 Device 002: ID 05c6:6000 Qualcomm, Inc. Siemens SG75<\/em>, vas por buen camino.<\/li>\n<li>Alcanzado este punto, se puede automatizar este cambio mediante la creaci\u00f3n de un fichero con nombre <em>05c6:1000<\/em> en el directorio <em>\/etc\/usb_modeswitch.d<\/em>. El fichero debe contener lo siguiente:\n<p><code>TargetVendor=0x05c6<br \/>\nTargetProduct=0x6000<br \/>\nStandardEject=1<\/code><\/li>\n<\/ul>\n<p>Con esta configuraci\u00f3n, Armbian pasar\u00e1 a configurar de manera correcta el m\u00f3dem, y estar\u00e1 listo para ser utilizado por la aplicaci\u00f3n de marcado.<\/p>\n<p><strong>Wvdial<\/strong><\/p>\n<p>Ya con el m\u00f3dem USB correctamente reconocido por el sistema, es necesario configurar una aplicaci\u00f3n de marcado, que permita levantar una interfaz de red en el sistema. En mi caso, he optado por utilizar wvdial. Los pasos para configurarla son los siguientes:<\/p>\n<ul>\n<li><strong>Instalar wvdial:<\/strong> wvdial se encuentra en los repositorios oficiales, por lo que se puede instalar con un simple <em>apt install wvdial<\/em>.<\/li>\n<li>Tras instalarla, utilizaremos la aplicaci\u00f3n <em>wvdialconf<\/em>, que tratar\u00e1 de reconocer y configurar de manera autom\u00e1tica el m\u00f3dem USB. Si hemos seguido correctamente los pasos anteriores de USB_ModeSwitch, no tendr\u00edamos que tener problema alguno. Tras la finalizaci\u00f3n de la aplicaci\u00f3n, \u00e9sta nos habr\u00e1 generado el fichero de configuraci\u00f3n <em>\/etc\/wvdial.conf<\/em>, con los par\u00e1metros gen\u00e9ricos de conexi\u00f3n del m\u00f3dem. La configuraci\u00f3n que se genera por defecto para el HSDPA es la siguiente:\n<p><code>[Dialer Defaults]<br \/>\nInit1 = ATZ<br \/>\nInit2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0<br \/>\nModem Type = Analog Modem<br \/>\nPhone =<br \/>\nISDN = 0<br \/>\nPassword = \"password\"<br \/>\nNew PPPD = yes<br \/>\nUsername = \"username\"<br \/>\nModem = \/dev\/ttyUSB0<br \/>\nBaud = 9600<\/code>\n<\/li>\n<li>Es necesario adaptar estos par\u00e1metros a tu operador para poder establecer la conexi\u00f3n. En mi caso, estoy utilizando Pepephone. Tras algunas pruebas, di con una configuraci\u00f3n que funciona correctamente:\n<p><code>[Dialer Defaults]<br \/>\nInit1 = ATE1<br \/>\nInit2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0<br \/>\nModem Type = Analog Modem<br \/>\nPhone = *99#<br \/>\nISDN = 0<br \/>\nPassword = \"pepephone\"<br \/>\nNew PPPD = yes<br \/>\nUsername = \"pepephone\"<br \/>\nModem = \/dev\/ttyUSB0<br \/>\nBaud = 9600<\/p>\n<p>Dial Command = ATDT<br \/>\nStupid Mode = 1<br \/>\nAuto Reconnect = on<br \/>\nInit3 = AT+CFUN=1<br \/>\nInit4 = AT+CGATT=1<br \/>\nInit5 = AT+CGDCONT=1,\"IP\",\"internet\",\"\",0,0<\/code>\n<\/li>\n<li>Por \u00faltimo, una vez guardado el fichero, se puede lanzar la conexi\u00f3n tan s\u00f3lo ejecutando el comando <em>wvdial<\/em>\n<\/li>\n<\/ul>\n<p>&#8230;y con esto quedar\u00e1 levantada la conexi\u00f3n ppp0, como la siguiente:<\/p>\n<p><code>ppp0: flags=4305<up ,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500<br \/>\n        inet 10.118.75.xx  netmask 255.255.255.255  destination 10.64.64.xx<br \/>\n        ppp  txqueuelen 3  (Point-to-Point Protocol)<br \/>\n        RX packets 125  bytes 9030 (8.8 KiB)<br \/>\n        RX errors 0  dropped 0  overruns 0  frame 0<br \/>\n        TX packets 122  bytes 9001 (8.7 KiB)<br \/>\n        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0<\/up><\/code><\/p>\n<p>Como punto de configuraci\u00f3n adicional, es conveniente automatizar la creaci\u00f3n de la interfaz. Aunque idealmente <a href=\"http:\/\/https:\/\/superuser.com\/questions\/225327\/how-can-i-get-wvdial-to-run-from-etc-network-interfaces\" target=\"_blank\">podr\u00eda hacerse<\/a> con la siguiente configuraci\u00f3n en <em>\/etc\/network\/interfaces<\/em>:<\/p>\n<p><code>auto ppp0<br \/>\niface ppp0 inet wvdial<\/code><\/p>\n<p>&#8230;pero he observado que no funciona demasiado bien tras un reinicio. Sospecho que es porque se intenta configurar la interfaz ppp0 cuando USB_ModeSwitch a\u00fan no ha completado la transici\u00f3n de dispositivo de almacenamiento masivo a m\u00f3dem USB. En mi caso, y para no complicarme, he optado por prescindir de la configuraci\u00f3n anterior, y en su lugar he a\u00f1adido el comando wvdial al fichero <em>\/etc\/rc.local<\/em>, resolviendo de esta manera el problema. No es tan elegante, pero funciona.<\/p>\n<p><strong>Editado<\/strong><\/p>\n<p>Un peque\u00f1o complemento: dado que por s\u00ed sola no se a\u00f1ade la ruta por defecto para que el tr\u00e1fico de red salga por el m\u00f3dem USB, <a href=\"https:\/\/superuser.com\/questions\/949520\/wvdial-ppp0-and-setting-default-route-automatically\" target=\"_blank\">se puede a\u00f1adir de manera autom\u00e1tica mediante un script<\/a>. Basta con crear un script ejecutable bajo la ruta <em>\/etc\/ppp\/ip-up.d\/<\/em> con un contenido como este:<\/p>\n<p><code>#!\/bin\/sh<br \/>\nip route add default dev ppp0<br \/>\nexit 0<\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Estoy trabajando en un proyecto IoT que implica el que<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[13],"tags":[29,141,517,812,986,1047,1209,1255,1686,1796],"series":[],"class_list":["post-4529","post","type-post","status-publish","format-standard","hentry","category-informatica","tag-3g","tag-armbian","tag-debian","tag-hsdpa","tag-linux","tag-modem","tag-orange-pi-zero","tag-pepephone","tag-usb_modeswitch","tag-wvdial"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts\/4529","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4529"}],"version-history":[{"count":0,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts\/4529\/revisions"}],"wp:attachment":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4529"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4529"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4529"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fseries&post=4529"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}