[Clevo-linux] Ahi va lo del modem

Eduardo Barambio clevo-linux@listas.hispalinux.es
Wed, 28 Nov 2001 14:24:50 +0100


Bueno, ahí va la cosa


Lo primero que hay que hacer es bajarse de internet las fuentes para el driver del modem del ordenata que es de Smart Link.

El ficherito de llama slmdm-2.04-00_20mdk.src.rpm. Esta en varios sitios y no es dificil encontrarlo. Ahora mismo no se de
 donde lo bajé pero luego lo busco.

 Una vez tienes las fuentes, las extraeis con el RPM u otra opcion alternativa... a vuestro gusto. El tema esta en que aparezca
 el tar.bz correspondiente en /usr/src/RPM/SOURCES. Lo descomprimis y a seguir el tema.


una vez hecho esto, cojeis el mismo paquetito y haceis esto:    rpm --rebuild slmdm-2.04-00_20mdk.src.rpm

Teneis que tener las fuentes del kernel instaladas en /usr/src/kernel-version.x.x.x , y un enlace en /usr/src/ que se llame
 linux y apunte a esas fuentes.

Una vez hecho esto, hos aparecen 3 paquetes rpm en /usr/RPM/RPMS/i686. Vale, ahora instalais los paquetes slmdm-2-04-00_20mdk y
	el slmdm-amr-2-04_02mdk. no instaleis el usb.
Vale, ahora cambiais a /usr/lib/slmdm y haceis esto:   ./load_slmdm

resultado de esto:

	unsesolved symbols tty_register_driver_Rxxxxxxxxx  *(1)
	unresolved symbols tty_unregister_driver_Rxxxxxxxx
	...
	...
Pero coño, ¿No había dicho este tipo que esto funcionaba? Pues vaya mierda...

Vale, no hemos terminado todavía.. aun hay mas

He descubierto que esos symbols no los puede enlazar insmod con el kernel, no porque no existan,sino porque dependen de la version del
 kernel que estemos usando. Esos symbol cambian en cada kernel y correponden a las xxxxxxx que os he puesto arriba (* ver 1).

 espero que esto os haya quedado claro.

 La solucion es sencilla a la par que elegante, aunque lleva un poquito de trabajo.

 Buscando esos symbols por algún sitio, los encontré el las fuentes del kernel, concretamente en ../linux/include/modules

 Hay que usar 2 archivos, uno para los symbols del modulo mdm.o y otro para los del amr.o. Estos 2 archivos estan en las fuentes del driver
  que descomprimimos antes si os acordais.

 Bueno, mucho lio hasta ahora, pero espero que os vayais aclarando.

Teneis que apuntar en una hoja los unresolved symbols que os daba al intentar insertar el modulo. Primero los del modulo slmdm, de este
 teneis que apuntarlos todos. Ahora, editais el fichero ../linux/include/modules/ksyms.ver, donde estan los numeros de version para cada
 symbols que el kernel exporta. Buscais con la funcion de busqueda del editor que habeis abierto cada uno de los unresolved symbols que habeis
 apuntado para el modulo slmdm.o. Vale.
Vereis que pone:  #define __ver_tty_register_driver     xxxxxxxx

así para cada symbol que busqueis. Apuntais el xxxxxxxx (8 digitos) para cada symbol. Deacuerdo por ahora ¿no?

Para el modulo amrm.o hay que hacer lo mismo pero solo para 2 symbols :  pci_find_slot y pci_find_device , pero estos estan el el archivo pci.ver

Ahora tenemos que sustituir esos numeros de 8 digitos (numeros y letras) en ambos modulos: mdm.o y amrm.o

Usad el editor binario, y abrid el fichero mdm.o . Buscad el primer symbol   tty_register_driver. aparecera por ahí perdido de la siguiente manera:

	tty_register_driver_Rxxxxxxxx . Sustituir xxxxxxxx por el numero que habiais anotado para este symbol.

Hacedlo así para cada uno en total 9 symbols. el symbol irq_stat , vsprintf , free_pages y get_free_pages, no los vais a encontrar, pues estos aparecen despues al enlazar los modulos.
Haced lo mismo para el modulo amrm.o, pero esta vez solo para los symbols pci_find_slot y pci_find_device.

Ok. La parte mas gorda ya esta hecha.Ahora, cambiais a las fuentes del driver slmdm que descomprimimos al principio. Vereis un archivo en c llamado slver.c.
compilarlo de la siguiente forma: gcc -o build-ver slver.c

Esto hará que nos instale los modulos para la version del kernel que tengamos instalada.
Ahora hacemos make, y despues make install.
Esto nos enlaza los modulos y los instala.

Si todo ha ido bien, y no me he olvidado de nada, cambiamos a /usr/lib/slmdm, y hacemos ./load_slmdm. Los modulos se insertarán en el kernel y ya tenemos el modem
 funcionando. Leeros el fichero readme. txt para un ultimo ajuste en la configuracion del modem (poner SPAIN para los protocolos del modem).


 Y ya esta.