Autor Tema: [Tutorial] Receptor de radio Wi-Fi con OpenWrt  (Leído 174935 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Sir-Stephen

  • Visitante
Re: Radio Wi-Fi con OpenWrt
« Respuesta #120 en: 05-12-2012, 19:26 (Miércoles) »
Bueno, pues mas noticias de los GPIO:

Para comenzar, no se por que extraña circunstancia, los GPIO del 16 al 20 se encuentran permanentemente dando salida lógica "1", con lo cual no nos son aprovechables.

Respecto a los 3 puntos marcados en el post anterior, lamentablemente los 3 son el mismo punto y corresponden al GPIO 24... ya tenemos uno!!!!

Afortunadamente, entre estos menesteres he descubierto otro justo al lado del punto del GPIO 24 en el CPU y que tambien va al mismo chip que el otro, correspondiente al GPIO 32.

Foto en alta calidad:
https://docs.google.com/file/d/0B3he-uebZ2aseklXZS00Y2paR28/edit

Asi que en el circuito, ambos GPIO quedan en el siguiente sitio:

Foto en alta calidad:
https://docs.google.com/file/d/0B3he-uebZ2asbWplZktZeWFMMDQ/edit



Sir-Stephen

  • Visitante
Re: Radio Wi-Fi con OpenWrt
« Respuesta #121 en: 05-12-2012, 21:34 (Miércoles) »
Y un ratito mas tarde apareció el GPIO 6......

Foto en alta calidad:
https://docs.google.com/file/d/0B3he-uebZ2asTGJVRGpoall1RWs/edit


Este GPIO Me tiene mosca:  Por la posición, me inclino a pensar que va directo a la sección del USB, pero ahi tengo conectado el sonido y la memoria interna a un HUB, y mientras se le inyecta los niveles lógicos, esto sigue sonando.... igual es para algo que solo se usa en telefonía o similar, asi que....  entre el GPIO 24, GPIO 32, GPIO 6 y el GPIO 9, ya tenemos las 4 señales para el lector de tarjetas.... solo resta buscar el conector y un positivo y un negativo.

Pienso que quizas podriamos ahorrar un GPIO si usamos el de un LED que no se vaya a utilizar ( por ejemplo el que señaliza el pen wifi ) y de paso nos marcaría cuando se inserta o expulsa una tarjeta, pero la pregunta es si podemos usar de esa forma esos GPIO ya que se encuentran ocupados por el módulo del LUCI asi como por el sistema en sí....

Bueno, ya veremos...

Sir-Stephen

  • Visitante
Re: Radio Wi-Fi con OpenWrt
« Respuesta #122 en: 11-12-2012, 09:10 (Martes) »
Bueno, tras un par de dias de pruebas, el lector no funciona.... se observa ciertos detalles:

-Aparece un mensaje de error en dmesg:

[   71.568000] gpio-mmc: Failed to request mmc_spi module.
[   71.584000] mmc_spi spi32766.0: ASSUMING 3.2-3.4 V slot power
[   71.592000] mmc_spi spi32766.0: SD/MMC host mmc0, no DMA, no WP, no poweroff
[   71.600000] gpio-mmc: MMC-Card "MMC_SD" attached to GPIO pins di=6, do=9, clk=24, cs=32
[   71.648000] mmc_spi spi32766.0: setup: unsupported mode bits 4
[   71.652000] mmc_spi spi32766.0: can't change chip-select polarity


Este error tambien aparece a las personas a las que le funciona el lector en otros tipos de router, asi que no Me preocupa mucho... Pero a estas mismas personas les aparece tambien un ultimo mensaje donde se indica que se ha encontrado el dispositivo mmc0 con la tarjeta XXX, cosa que a Mi no Me aparece.

- Cuando ejecuto el arranque, una vez que se carga "mmc_over_gpio" y por tanto se utilizan las gpio que he descubierto, todos los LED´s del router se apagan!!!!  Algo pasa.....

- Mi idea fue cargar ese "mmc_over_gpio" en último lugar para saltarme cualquier diagnóstico, pero sucede lo mismo.

- La segunda parte fue utilizar los gpio de los LED´s en lugar de los Mios, pero siempre da algun error en dmesg que indica una falta de inicialización en la interfaz spi...

- Lei por ahi algo de una máscara de los bits correspondientes a los gpio, pero para otros routers.... Se sabe algo?

Y hasta ahora esas son Mis experiencias....

Por cierto, que en Mis manos ha caido un router de Jazztel, el AR-5387un, que ya veo estais en ello.... ya le puse el openwrt, pero claro, tambien lo he desmontado..... en su interior aparecen dos lugares donde deberian haber dos LED´s ( gpios de salida???? ), y el lugar donde deberia haber otro pulsador interno ( gpio de entrada? ).... además, aparte del conector serie, hay 6 testpoints en una esquina..... parece que este bichito tambien puede investigarse.....

raphik

  • Visitante
Re: Radio Wi-Fi con OpenWrt
« Respuesta #123 en: 16-12-2012, 18:17 (Domingo) »
No sé dónde soleis buscar las emisoras de radio. Yo lo hago aquí, hay miles, y ordenadas por estilos:
http://vtuner.com/setupapp/guide/asp/BrowseStations/startpage.asp
Estupenda página, Danitool. Yo suelo usar la de NullSoft: http://www.shoutcast.com/
« Última modificación: 16-12-2012, 18:20 (Domingo) por raphik »

Sir-Stephen

  • Visitante
Re: Radio Wi-Fi con OpenWrt
« Respuesta #124 en: 24-12-2012, 10:10 (Lunes) »
Bueno, tras múltiples quebraderos de cabeza con los GPIO, llego a la conclusión que si bien pueden ser utilizados de forma individual para por ejemplo encender un zumbador ( por lo del mando a distania... ) o un led, con el modulo mmc_over_gpio no se lleva nada nada bien, y Me ha sido imposible que funcione el lector de tarjetas......


Otra vez será!!!


Por cierto, a los que han fabricado el mando a distancia mediante LIRCD y el driver Alsa con el sensor y todo eso..... funciona bien del todo?  no os sucede que a veces en el arranque no va y hay que reiniciar todo el proceso lircd completo?  o que pierde la sensibilidad a veces?  Desde luego que no hay forma de tener una radio como dios manda al 100%, siempre hay algun problemilla, grrrr.....


Como siempre, gracias por anticipado!!!

danitool

  • Visitante
Re: Radio Wi-Fi con OpenWrt
« Respuesta #125 en: 24-12-2012, 12:17 (Lunes) »
A mi lircd me va perfecto con lirc-alsa, jamás perdí sensibilidad ni nada de eso. Es más sensibilidad perfecta, apunte a donde apunte siempre me pilla bien las pulsaciones. Ahora bien, he de confesar que la primera vez que monté el tema con una versión trunk no iba muy fino, pero luego de repasar todo, y usar la versión estable Backfire, va más que perfecto todo.

Quizás más adelante me cambie a AA, a ver si va a ser eso. Lo malo que no tengo muchos recursos en el livebox (16 MB de RAM y un procesador cutre).

Podría ser cualquier cosa, incluso la alimentación del módulo lirc, yo en mi livebox el tsop1738 coge los 5 V del puerto serie (sí en el livebox va a ese voltaje), y supongo que será una fuente más fiable y estable que la del puerto USB.

Aunque como ya digo no descarto que sea un bug de lirc con las últimas versiones. Yo te diría que le des un tiento con Backfire a ver si lirc es más estable ahí.

Sir-Stephen

  • Visitante
Re: Radio Wi-Fi con OpenWrt
« Respuesta #126 en: 27-12-2012, 16:48 (Jueves) »
Efectivamente, cualquier problema habido y por haber con el mando a distancia es culpa de AA.... en Backfire va como la seda e incluso ya he probado otros mandos que tenia en casa, pero al ser mandos miniatura ( de portatiles y marcos digitales y similares ) el LED es pequeño y va protegido por plastico oscuro, por lo que los nivels son mínimos y hay que estar muy cerca para que funcionen.  Definitivamente, el mando de un AverMedia es una solución totalmente válida.


Al observar Backfire mas detenidamente, he visto que hay varias carpetas y archivos para GPIO, lo que Me da a pensar que quizas el módulo MMC/SD que fracasó en AA funcione aqui.... asi que ya tengo para volver a entretenerme.


Y un consejo:  Si el sensor receptor va a estar en un sitio fuertemente iluminado, cabe la posibilidad de que sea engañado por la luz procedente de lámparas, luz solar, etc...  Me sucedió algo parecido hace años con unos ratones de unos PC en un exposición en pleno Sevilla, asi que recomiendo rebuscar entre esa chatarrilla electrónica que tenemos por ahi un trozo de plástico del utilizado para tapar dichos sensores en los videos antiguos, dvds, etc.... ese plastico rojo que dificulta la entrada de luz normal pero facilita la de IR....

https://docs.google.com/file/d/0B3he-uebZ2asLTg2MHJFMElYRWc/edit

Ademas, seguro que tapa el agujero que hayamos hecho para sacar el sensor fuera del router.

danitool

  • Visitante
Re: Radio Wi-Fi con OpenWrt
« Respuesta #127 en: 27-12-2012, 17:51 (Jueves) »
Vaya, entonces estos son malas noticias, a ver quien es el guapo que es capaz de depurar el problema con lirc-alsa en AA. Lo único que fui capaz de ver en su día es mediante el consumo de CPU que no siempre lirc cuando estaba ejecutándose hacía un consumo regular en la rama trunk, mientras que en Backfire sí, lo que puede indicar que el proceso se "duerme" en lugar de estar escuchando contínuamente lo que le llega por lirc-alsa. Vamos que podría ser un problema de "polling" o como se llame.

Lo de las lámparas y ciertas luces es cierto. Sobre todo con las nuevas bombillas "ecológicas" de tubos con gas, las de filamento incandescente no le afecta. Por lo que una luz directa e intensa de este nuevo tipo de bombillas sí que puede afectarle bastante. Recomendable grabar al menos los códigos en la penumbra, con poca luz.

La única pega de Backfire es que no tiene implementados los botones de los bcm63xx para que funcionen. También algo relacionado con lo de los GPIO.

A mi en AA, con la interfaz nativa SPI del propio SoC tampoco me funcionan las memorias SD. y en backfire la esta interfaz no está disponible, así que como última opción quedan los GPIO. Si te funciona informa.



Sir-Stephen

  • Visitante
Re: Radio Wi-Fi con OpenWrt
« Respuesta #128 en: 28-12-2012, 17:26 (Viernes) »
sigo investigando.....

He vuelto a montar el lector, y tras activarlo en luci y colocar las GPIO 6, 9, 24 y 32, los leds del router se apagan de golpe.....  en dmesg obtengo este mensaje:

gpio-mmc: Failed to request mmc_spi module.
mmc_spi spi32766.0: ASSUMING 3.2-3.4 V slot power
mmc_spi spi32766.0: SD/MMC host mmc0, no DMA, no WP, no poweroff
gpio-mmc: MMC-Card "Lector_MMC-SD" attached to GPIO pins di=6, do=9, clk=24, cs=32
mmc_spi spi32766.0: can't change chip-select polarity



Sin embargo, en http://www.dd-wrt.com/phpBB2/viewtopic.php?p=447846 observamos otro tipo de salida:

gpio-mmc: Failed to request mmc_spi module.
mmc_spi spi32766.0: ASSUMING 3.2-3.4 V slot power
mmc_spi spi32766.0: SD/MMC host mmc0, no DMA, no WP, no poweroff
gpio-mmc: MMC-Card "default" attached to GPIO pins di=2, do=4, clk=1, cs=3
mmc_spi spi32766.0: can't change chip-select polarity

mmc0: host does not support reading read-only switch. assuming write-enable.
mmc0: new SD card on SPI
mmcblk0: mmc0:0000 SD2GB 1.90 GiB

Donde se ve que se produce el montaje de la tarjeta.... algo falla....

Hace algun tiempo lei sobre el enmascaramiento de bits de GPIO en el Linksys w54, pero para este HW no he encontrado nada.... alguien sabe algo? podria ser la clave del apagado de los leds y porque no funciona el lector.

Lo bueno de todo es que en este backfire, la orden "gpioctl" funciona!!!!!  O sea, Me podria haber ahorrado medio script para averiguar las GPIO a base de osciloscopio.....  Podemos ver como funciona:

cat /sys/kernel/debug/gpio

GPIOs 0-39, bcm63xx-gpio:
 gpio-0   (gpio-buttons        ) in  hi
 gpio-4   (power:blue          ) out hi
 gpio-5   (power:red           ) out lo
 gpio-6   (spi_mosi            ) out hi
 gpio-9   (spi_miso            ) in  hi
 gpio-12  (internetkey:red     ) out hi
 gpio-13  (internetkey:blue    ) out lo
 gpio-22  (adsl:red            ) out hi
 gpio-23  (adsl:blue           ) out lo
 gpio-24  (spi_clock           ) out lo
 gpio-25  (wifi:red            ) out hi
 gpio-32  (spi_cs              ) out hi
 gpio-34  (lan:red             ) out hi
 gpio-35  (lan:blue            ) out lo



Ahora hacemos gpioctl clear 32, con lo cual pondremos el gpio32 a nivel bajo, y volvemos a observar....

root@NET-RADIO:~# gpioctl clear 32
using gpio pin 32
root@NET-RADIO:~# cat /sys/kernel/debug/gpio
GPIOs 0-39, bcm63xx-gpio:
 gpio-0   (gpio-buttons        ) in  hi
 gpio-4   (power:blue          ) out hi
 gpio-5   (power:red           ) out lo
 gpio-6   (spi_mosi            ) out hi
 gpio-9   (spi_miso            ) in  hi
 gpio-12  (internetkey:red     ) out hi
 gpio-13  (internetkey:blue    ) out lo
 gpio-22  (adsl:red            ) out hi
 gpio-23  (adsl:blue           ) out lo
 gpio-24  (spi_clock           ) out lo
 gpio-25  (wifi:red            ) out hi
 gpio-32  (spi_cs              ) out lo
 gpio-34  (lan:red             ) out hi
 gpio-35  (lan:blue            ) out lo


Por cierto, como podeis ver, en Backfire aparece el GPIO 0 referido a un botón, apareciendo el correspondiente evento en las carpetas del sistema.  Los GPIO 6, 9, 24 y 32 se ven ocupados por el lector, pero referidos a la interfaz SPI, no a GPIO... y ahi Me pierdo, igual ese es el problema.  Ni idea de que es el SPI ni como verlo.....

Finalmente ( no quiero hacer crecer mas este tocho ) comentar que el poder utilizar los GPIO desde gpioctl nos va a permitir mandar por ejemplo un zumbador que funcione cuando pulsemos una tecla del mando a distancia.... o cualquier otra cosa....

Por si alguno no se quiere "pringar" colocando el zumbador, hay uno modo barato de hacer un "detector de pulsación del mando a distancia": 

amixer set Mic playback on 90

De esta forma activamos el mezclador en la tarjeta de sonido, en la seccion MIC.... como por ahi entra la señal del sensor, "sonará" el tren de impulsos en los altavoces cada vez que pulsemos una tecla... vale, no es un sonido bonito, pero al menos nos sirve...  además, en los mandos de protocolo RC6 el sonido es mas bonito por ser mas agudo, pero al mismo tiempo es mas sensible al Efecto Doppler cuando no apuntemos correctamente el mando, por lo cual nos daremos cuenta al oir este "zumbador casero".....

danitool

  • Visitante
Re: Radio Wi-Fi con OpenWrt
« Respuesta #129 en: 29-12-2012, 00:00 (Sábado) »
Si te sirve de consuelo, a mi ni siquiera usando la interfaz nativa SPI del bcm6348 me funciona la tarjeta SD. Obtengo un resultado parecido al tuyo, don el debug activado a veces si que logra detectar algo, envía y recibe comandos a la tarjeta SD, pero finalmente acaba por no detectarla, ni capacidad ni nada de nada.

El poder usar gpioctl realmente no es más ventaja que tener un poco de comodidad, se puede hacer lo mismo exportando. Pero lo suyo es usar los triggers del kernel por digamos reaccionar de forma más instantánea. En el caso de un zumbador se puede este definir como un led más y asociar un trigger. Hace tiempo hice una modificación en un trigger del kernel, pero no hubo mucho interés  >:D

https://dev.openwrt.org/ticket/9788

De hecho tengo un zumbador piezoeléctrico en un gpio. El funcionamiento viene a ser idéntico al de un led, solo que en lugar de señal luminosa tenemos señal acústica. He de decir que es bastante escandaloso y lo uso poco. Tal vez sea ideal para programar eventos con cron, como despertador fijo cumple su función  ;D

Lo malo de usar como indicas la señal acústica que produce el propio módulo infrarrojos en la entrada de micro es, primero que tener activada la entrada de micro para reproducirla introduce algo de ruido en en nuestra radio, cosa que no gustará si tenemos una oreja medianamente exquisita, y segundo que no siempre que oigamos el ruido de la pulsación querrá decir que el lirc a captado la señal correctamente... O sea que podemos pulsar el mando, oir en la radio que sí se ha detectado la pulsación, pero que la radio no reacciona, lo cual resulta feo...

Lo apropiado pienso sería con un zumbador, pero que el control de ese zumbador lo lleve el propio módulo lirc-alsa, o si fuese posible un módulo del propio kernel, porque lo que nos interesa es una respuesta inmediata y fiable al 100%. Hacerlo con scripts es válido pero se nota ya que la respuesta no es inmediata siempre, sobre todo si vamos justos de procesador.




Sir-Stephen

  • Visitante
Re: Radio Wi-Fi con OpenWrt
« Respuesta #130 en: 29-12-2012, 15:38 (Sábado) »
Eso de la interfaz nativa del SPI Me lo tienes que explicar...  ^-^


Tras mas investigaciones, creo que el tema es la asignación de una parte del espacio de los GPIO a los SPI, que no se realiza correctamente, para lo cual creo que el modulo adecuado es kmod-gpiotoggling, pero.... como se usa eso?????


Alguna ideita??

Sir-Stephen

  • Visitante
Re: [Tutorial] Radio Wi-Fi con OpenWrt
« Respuesta #131 en: 07-01-2013, 23:14 (Lunes) »
Bueno, pues hace tiempo se planteó aqui la posibilidad de grabar la emisora que estuviera sonando, y creo que los que pensamos en eso imaginábamos un programa de grabación a través de Alsa por el Mic, etc etc etc....

NO!!!  Backfire incorpora la utilidad STREAMRIPPER, cuya misión es guardar en un archivo mp3 el stream de música que nos llega via radio.

Su uso básico es Streamripper URL_emisora -a camino_y_archivo_de_salida

Asi que como la mayoría pusimos pendrive por el puerto USB... a grabar!!

danitool

  • Visitante
Re: [Tutorial] Radio Wi-Fi con OpenWrt
« Respuesta #132 en: 07-01-2013, 23:23 (Lunes) »
Bueno, pues hace tiempo se planteó aqui la posibilidad de grabar la emisora que estuviera sonando, y creo que los que pensamos en eso imaginábamos un programa de grabación a través de Alsa por el Mic, etc etc etc....

NO!!!  Backfire incorpora la utilidad STREAMRIPPER, cuya misión es guardar en un archivo mp3 el stream de música que nos llega via radio.

Su uso básico es Streamripper URL_emisora -a camino_y_archivo_de_salida

Asi que como la mayoría pusimos pendrive por el puerto USB... a grabar!!
Cierto con STREAMRIPPER se puede hacer, es más, es capaz de separar las canciones poniéndole el título incluso. Hay que tener en cuenta que mientras reproducimos y lanzamos el streamripper tendremos dos hilos de la emisora en descarga, uno reproduciendo y otro grabando lo cual no debiera suponer problema alguno.

Una pena que en los routers solemos tener poca RAM, porque lo que podríamos hacer es grabar contínuamente la emisora con streamripper a modo de buffer digamos unos 5 minutos que se conserven en RAM (/tmp), así cuando decidiesemos grabar un tema ya empezado tendríamos la canción completa.

Si haces algo interesante con streamripper, algún script, informa.

Sir-Stephen

  • Visitante
Re: [Tutorial] Radio Wi-Fi con OpenWrt
« Respuesta #133 en: 08-01-2013, 10:47 (Martes) »
Bueno, en Mi caso voy a utilizar un pendrive de 8 gigas, que se encuentra montado en /mnt/sdb1... en su interior hay una carpeta creada denominada "music", accesible desde samba y windows y ademas es la carpeta "music" de mpd, sin estar oculta.

Acto seguido ejecutamos:

                streamripper $(mpc -f %file% | grep -e "^http") -s -d /mnt/sdb1/music

Y ya está!!!

mpc -f %file%  nos da la información de lo que este sonando en mpc, del cual extraemos la URL gracias a grep... el parametro -s de streamripper crea un directorio unico para todo lo grabado ( incluyendo uno denominado "incomplete" si la canción no esta del todo grabada) y -d da el camino al pendrive.

Sigo haciendo pruebas a ver si va todo bien...

Reedición:

Efectivamente, en la carpeta incomplete se va guardando todo, pero si la canción acaba, automáticamente es cambiada al raiz del pendrive, puesto que asi lo especificamos con -d y -s en streamripper; si cortamos antes o empezamos tarde, el stream se queda en incomplete.

Mas reediciones...

El tema de la grabación va genial...  unos pocos scripts Me estan dando el control completo sobre la radio y el mando a distancia, sin embargo hay que tener un detalle en cuenta:  Streamripper se coloca el solito en primer plano y ocupa todo todo todo, por lo que a menos que se haga un Ctrl+Z no hay forma de hacer nada mas, sobre todo con el mando a distancia...

Solución:  que se ejecute en segundo plano colocando al final de la línea de ejecución el carácter &... y ya está!!!
« Última modificación: 23-01-2013, 13:08 (Miércoles) por Sir-Stephen »

Sir-Stephen

  • Visitante
Re: [Tutorial] Radio Wi-Fi con OpenWrt
« Respuesta #134 en: 25-01-2013, 14:44 (Viernes) »
Mi radio esta tomando ya una recta casi final.... lo penúltimo fue grabar, lo último fue sonar desde pendrive que siempre se Me resistió.


Si bien lo que se explicaba en la pagina 2 era cierto, lo referente a redirigir el directorio /music al pendrive de turno, puede suceder que no tengamos forma de acceder a sus canciones ni nada, por mas mpc add / que hagamos...


Ello es debido a que no se ha actualizado la base de datos .db interna del comando mpc, para lo cual la solución es ejecutar el siguiente comando antes de querer sonar las canciones del pendrive:

                                                              mpc update

Con este comando ya podremos utilizar las canciones del pendrive tras la ejecución de mpc add /


Otro problema gordo es hotplug.... si bien funciona de escándalo, detectando un pendrive cuando se le pincha gracias a las ordenes dentro de la carpeta /etc/hotplug.d/usb/10-usb,  ese mismo archivo se ejecuta en el inicio del firm del ruter al ser enchufado, por lo que si hay alguna rutinita que se deba ejecutar cuando se pinche un pendrive ( por ejemplo encender LED´s, cargar alguna carpeta, crear algun archivo, activar un zumbado, Yo que se!!! ) tambien se ejecutaría cuando se iniciara el router, puesto que se chequeqn los puertos USB, y muchos de nosotros tenemos conectado un HUB tal como ya quedo dicho páginas atras, lo que haria que todo ello se ejecutara sin pendrive conectado....

En Mi caso es peor, puesto que he grabado varios archivos en mp3 con voces roboticas para avisarme de los eventos que suceden, y en el arranque suena una voz cavernosa diciendo "pendrive insertado".... sin estarlo.


La solución que encontre fue la siguiente:

-Sustitución del archivo 10-usb de su ubicación original (/etc/hotplug.2/usb/10-usb) por un acceso directo a dicho archivo que ahora estará sito en la carpeta /tmp.

-El archivo 10-usb se encuentra en otra carpeta, y en el archivo /etc/rc.common   incluir una linea donde se ejecute la copia de dicho archivo desde el origen donde se encuentre a su destino en /tmp

-De esta forma, en el reinicio del router, hotplug.d busca el archivo 10-usb, encontrando en su lugar un link a /tmp, pero ahi no existe archivo alguno aun.... hasta que se ejecuta /etc/rc.common, momento en que se efectua la copia, y el link ya si apunta al archivo 10-usb en cuestion.


En su momento intente eliminar el autochequeo de los USB terminando con un lindo cuelgue y nueva carga de firmware, asi que es la solución mejor que encontre....  si alguien sabe alguna mas, agradecido.....

raphik

  • Visitante
Re: [Tutorial] Radio Wi-Fi con OpenWrt
« Respuesta #135 en: 30-01-2013, 21:58 (Miércoles) »
Se podría incluir alguna línea en el fichero /etc/hotplug.d/usb/10-usb que detecte si está instalado o no el pendrive. Échale un vistazo a este script:
Código: [Seleccionar]
#!/bin/sh -
# Script que detecta la presencia real de un pendrive
# 01/02/2013 :P raphik
# Nombre del fichero: pendrive.sh
# Cópialo en la carpeta /root
# Hazlo ejecutable: chmod +x /root/pendrive.sh
# Ejecútalo: /root/./pendrive.sh
#
ls /dev/sd* &> /dev/null
if [ "$?" == 0 ]; then
  echo "¡Pendrive detectado!"
else
  echo "No se detectó ningún pendrive"
fi
exit

En linux la variable $? hace la misma función que %ERRORLEVEL% en MS-DOS. Es decir, toma el valor 0 si el último comando ejecutado terminó con éxito. En caso contrario toma el valor 1.
El código que sigue me trajo de cabeza algunos minutos. Se puede probar cortando y pegando cada línea en una sesión telnet.
ls /dev/sd* &> /dev/null
echo $?
echo $?

El primer echo devuelve 0 ó 1 según haya o no un  pendrive conectado, pero el segundo echo siempre devuelve 0. ¿Por qué?

La respuesta es simple: porque el primer echo siempre acaba con éxito y pone la variable $? a 0.
« Última modificación: 27-03-2016, 14:08 (Domingo) por raphik »

raphik

  • Visitante
Re: [Tutorial] Radio Wi-Fi con OpenWrt
« Respuesta #136 en: 02-02-2013, 21:26 (Sábado) »
Sir-Stephen, ¿puedes subir una copia de tu archivo 10-usb?
« Última modificación: 02-02-2013, 21:40 (Sábado) por raphik »

Sir-Stephen

  • Visitante
Re: [Tutorial] Radio Wi-Fi con OpenWrt
« Respuesta #137 en: 03-02-2013, 23:57 (Domingo) »
#!/bin/sh

# Copyright (C) 2009 OpenWrt.org

mpc stop

amixer set Speaker 100

case "$ACTION" in
   add)
      madplay /mnt/sda1/Interna/inserta.mp3
      mount -t auto /dev/sdb1 /mnt/sdb1
      echo 1  > /sys/class/leds/internetkey:red/brightness
      echo SI > /mnt/sda1/Interna/PENSINO
      ;;
   remove)
      madplay /mnt/sda1/Interna/extrae.mp3
      umount /mnt/sdb1
      echo 0  > /sys/class/leds/internetkey:red/brightness
      echo NO > /mnt/sda1/Interna/PENSINO
      ;;
esac   

amixer set Speaker $(grep -e "^" /mnt/sda1/Interna/VOLUMEN)

mpc play


Realmente, todo lo estoy moviendo por scripts, ya que así el programa por Java no tendrá que hacer nada especial, solo llamarlos o recibir sus resultados.

sda1 es un pendrive de 128MB del año de la castaña soldado al puerto usb trasero directamente.... ahi van los scripts, los sonidos mp3 y sobre todo, la carpeta mpd completita incluyendo las emisoras memorizadas.

Por cierto, como ves existen dos variables ( entre otras muchas ) PENSINO y VOLUMEN, que al ser ficheros pueden ser consultados o modificados por cualquier script lanzado.  

PENSINO indica si el pen está o no insertado, para luego poder hacer el cambio pen/radio o viceversa, o para poder grabar en su directorio music.  

VOLUMEN almacena el volumen actual de amixer, que por cierto es bastante "cutre"... encuentro que el volumen va como a "saltos" si utilizas el mixer hardware de la tarjeta de sonido, mientras que va totalmente fino si utilizas el mezclador por software, pero en este ultimo caso lircd no termina de ir bien del todo, y encima mpc volume X solo funciona en modo software, no en modo hardware....
« Última modificación: 04-02-2013, 00:05 (Lunes) por Sir-Stephen »

raphik

  • Visitante
Re: [Tutorial] Radio Wi-Fi con OpenWrt
« Respuesta #138 en: 06-02-2013, 22:17 (Miércoles) »
Sir-Stephen:
Para que no suenen las voces robóticas hay que impedir que se ejecute el script /etc/hotplug.d/usb/10-usb durante el proceso de arranque.

Editamos el script /etc/rc.local (le añadimos la línea en negrita):
# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.
echo "ok" > /tmp/listo.txt
exit 0

Con esto conseguimos generar el fichero listo.txt justo después de terminar el proceso de arranque. Al estar en la carpeta tmp, desaparece con cada nuevo arranque.

Ahora editamos el script /etc/hotplug.d/usb/10-usb (le añadimos la línea en negrita):
#!/bin/sh
# Copyright (C) 2009 OpenWrt.org
[ -f /tmp/listo.txt ] || exit 0
mpc stop
amixer set Speaker 100
case "$ACTION" in
   add)
      madplay /mnt/sda1/Interna/inserta.mp3
      mount -t auto /dev/sdb1 /mnt/sdb1
      echo 1  > /sys/class/leds/internetkey:red/brightness
      echo SI > /mnt/sda1/Interna/PENSINO
      ;;
   remove)
      madplay /mnt/sda1/Interna/extrae.mp3
      umount /mnt/sdb1
      echo 0  > /sys/class/leds/internetkey:red/brightness
      echo NO > /mnt/sda1/Interna/PENSINO
      ;;
esac  
amixer set Speaker $(grep -e "^" /mnt/sda1/Interna/VOLUMEN)
mpc play

La línea en negrita impide que se ejecute el resto del código antes de que el proceso de arranque haya terminado.

La verdad, tampoco es muy elegante generar un fichero en /tmp para usarlo de bandera que marque el final del system init.
« Última modificación: 10-02-2013, 00:38 (Domingo) por raphik »

ximox

  • Visitante
Re: [Tutorial] Radio Wi-Fi con OpenWrt
« Respuesta #139 en: 05-03-2013, 18:17 (Martes) »
Tras mas de un fracaso e hecho funcionar mi huawei 556a como radio wifi  asi que lo primero doy las gracias a todos los que me han ayudado como noltari aunque se olvido de compilarme ese firm pero es de entender eso lleva su tiempo tambien a danitool,raphik ,etc.me aventure a intentar compilarlo me a sido imposible siempre tenia errores .y los firms trunk no consegui ninguno que me diera conexion por telnet asi que lo hice desde cero con un firm pelao añadiendole los paquetes,luci,mpd ,mpc etc. al final me funciono aunque con algunas pegas.Despues de mucho documentarme y probar funciono pero no e sido capaz de instalar mpd-full .
Citar
root@OpenWrt:~# opkg install mpd-full
Installing mpd-full (0.16.5-2) to root...
Collected errors:
 * opkg_download_pkg: Package mpd-full is not available from any configured src.
 * opkg_install_pkg: Failed to download mpd-full. Perhaps you need to run 'opkg update'?
 * opkg_install_cmd: Cannot install package mpd-full.
asi que tengo el mpd base al teclear en consola mpd --version me da el siguiente resultado.
Citar
root@OpenWrt:~# mpd --version
mpd (MPD: Music Player Daemon) 0.16.1

Copyright (C) 2003-2007 Warren Dukes <warren.dukes@gmail.com>
Copyright (C) 2008-2010 Max Kellermann <max@duempel.org>
This is free software; see the source for copying conditions.  There is NO
warranty; not even MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Supported decoders:

[mad] mp3 mp2
[oggflac] ogg oga
[flac] flac
[audiofile] wav au aiff aif
[faad] aac

Supported outputs:

shout null fifo alsa httpd recorder

Supported encoders:

null vorbis wave flac

Supported protocols:

file:// http:// mms:// mmsh:// mmst:// mmsu://
root@OpenWrt:~#
en otra web vi que en supported encoders y en supported protocols salian mas datos,tal vez sea que me falte alguna libreria y por eso las estaciones con extension .m3u no me suenen.