Proyecto Driver USB Modem (Cable y ADSL)

CodeMachine

Activo
Driver USB Modem (Cable y ADSL)

He creado un Driver USB para Cable Modem y ADSL Modem que soporten el interfaz CDC/ECM, que son la gran mayoria.

Este driver esta basado en un Ejemplo de programación de Apple Computer.

El Interfaz CDC/ECM se basa en la capacidad del USB para transmitir paquetes de datos TCP/IP como si fuera una red.

El Driver detecta el modem e informa si el modem tiene soporte CDC/ECM, solo funciona con este interfaz.

Esta es la primera version la 0.0.1 Beta solo lo he probado con mi modem un Motorola SurfBoard 4200 asi que teoricamente el driver tendria que funcionar con todos los motorola por lo menos.

Me seria de gran ayuda que vayan informando tanto si funciona como si no.. para ir dando soporte a mas modem en las nuevas versiones del driver.

Teoricamente el driver tendria que funciona tanto en Mac reales como en Hackintosh (yo lo programe en uno de estos :) ) asi que todos salis ganado.

Bye ;-)


Si produce algun kernel panic simplemente desconectar el modem, reiniciar y borrar el driver desde MAC OS cuando carge.

Añado una imagen..

 

juker12

Activo
Hola

Me parece estupendo este proyecto tio. Oye...con el modem Thomson SpeedTouch seria capaz de andar?
 

CodeMachine

Activo
Lo primero es USB el modem? Te funciona en linux con el driver CDCEther de linux?? si es asi hay un 88% que funcione (el 88% es por que solo lo he probado con el SB4200 mio :) )

El driver es realmente muy estable llevo 4 dias usandolo y funciona perfectamente, el 80% del codigo es original de Apple el resto es mio claro. ;) (y cada vez sera mas mio.. eso si gracias a Apple esto Microfost no lo hace ni soñando :) :))

Originalmente el driver era un ejemplo de Apple de como programar un dispositivo USB (Generico) utilizando el interfaz CDC (simula una red Ethernet) en MAC OS 10.3.x (Adaptarlo a MAC OS 10.4.x fue lo mas complicado).

He tenido que modificar el codigo para que detecte dispotitivos CDC/ECM que normalmente son modem, aunque podria ser cualquier otro dispositivo que SIMULE una tarjeta ETHERNET por USB.

Tambien tube que modificar el codigo para que cree la tarjeta de red virtual utilizando una MAC virtual.. por que el codigo original de Apple no detecta la MAC del modem (esto es una de las cosas que quiero ver si la detecta con otros modem) si la detecta utiliza la MAC real del modem. :)

Al ser un ejemplo el codigo original no esta muy optimizado, ahora que ya me funciona estoy comprendiendo mucho mejor como funciona todo y estoy optimizando el codigo. De hecho ahora voy a poner la version 0.0.2 estos son los cambios:

Change History (most recent first):

<0.0.2 Beta> 13/10/2007 Communications speed functions improvement.
USBTransmitPacket
dataWriteComplete
A message box inform you the USB Cable is Unpluged.

<0.0.1 Beta> 07/10/2007 Fix and Update obsolete version struc mbuf.
More compatibility functions:
init
probe
start
enable
disable
stop
free
More system estability, cause system slow.
Bad programed event in message fuction
and timedOutOccurred fuction.
Hardware detection functions improvement.
Init
probe
start
New funcion getMACAddress.
New funcion SetupVirtualNetworkCard.
Fix minor bug.
<1> 07/30/02 New sample.
<2> 12/01/02 Fixed a couple of bugs and added an output buffer pool. (Apple Computer)

P.D. tambien hize un FIXED (corrección para el que no sepa ingles) del driver forcedeth para tarjetas de red nForce 4, esto es solo para Hackintosh claro.

https://www.osx86spain.com/47/5613/fallo-could-not-find-a-valid-phy-para-red-nforce-corregido.html

Bye :)
 

CodeMachine

Activo
Añado una nueva version la 0.0.2 Beta estos son los cambios:

Change History (most recent first):

<0.0.2 Beta> 13/10/2007 Communications speed functions improvement.
USBTransmitPacket
dataWriteComplete
A message box inform you the USB Cable is Unpluged.

<0.0.1 Beta> 07/10/2007 Fix and Update obsolete version struc mbuf.
More compatibility functions:
init
probe
start
enable
disable
stop
free
More system estability, cause system slow.
Bad programed event in message fuction
and timedOutOccurred fuction.
Hardware detection functions improvement.
Init
probe
start
New funcion getMACAddress.
New funcion SetupVirtualNetworkCard.
Fix minor bug.
<1> 07/30/02 New sample.
<2> 12/01/02 Fixed a couple of bugs and added an output buffer pool. (Apple Computer)
 

CodeMachine

Activo
Nueva version CDCEthernet v0.0.3 Beta (Driver Modem USB para Mac OS X 10.4)

En esta version reconoce el MACAddress de algunos modelos de modem que lo tienen escrito en el numero de serie (el SurfBoard 4200 es uno de ellos) tambien crea una MAC Virtual en el caso de no ser detectada por el driver.

Recomiendo probar esta ultima version, dado que es la mas estable.

Por favor probar el driver y decirme los resultados, si el MODEM es comprado y no os atreveis me parece logico, pero si es alquilado (Telefonica, ONO, etc) en el caso que se estrope llamais y os lo cambian por otro nuevo. Pero dudo mucho que dañe algun modem por que el driver solo lee datos no graba nada en el modem.

En el driver esta incluido un archivo (en español e ingles) que explica como instalarlo si teneis dudas preguntarme.

P.D. Seria de agradecer que algun moderador borre las dos versiones viejas, yo lo haria pero no puedo editar mis propios post.

Bye :)
 

CodeMachine

Activo
Nueva version CDCEthernet v0.0.3 Beta (Driver Modem USB para Mac OS X 10.4)

En esta version reconoce el MACAddress de algunos modelos de modem que lo tienen escrito en el numero de serie (el SurfBoard 4200 es uno de ellos) tambien crea una MAC Virtual en el caso de no ser detectada por el driver.

Recomiendo probar esta ultima version, dado que es la mas estable.

Bye :)
 

CodeMachine

Activo
Nueva version CDCEthernet v0.0.4 Beta (Driver Modem USB para Mac OS X 10.4)

He corregido un error que producia algunos reinicios del modem aleatorios.

<0.0.4 Beta> 19/10/2007 Fix dataWriteComplete function.
It cause reset modem random.

Veo poca colaboracion, os recuerdo que la mayoria de driver que estais pidiendo para vuestro "hackintosh" (que sois la mayoria) o Mac no estan soportados por Apple ni por ninguna compañia, estan hechos por aficionados o profesionales(soy Tec. Informatico) que quieren colaborar con la comunidad osX86.

Los Titan, Natti, MacVidia, emuladores de SS2, nForce4 Lan, Calipso, Azalia (driver de sonido HD) etc..., estan desarrollados por aficionados.. si teneis miedo de utilizar un driver hecho por un español.. mejor no instaleis MAC OS X (para PC) o estropeareis vuestro ordenador.

Bye :)
 

rafaes

Activo
Hola
Acabo de ver tu post y me alegra muchísimo que siga saliendo gente (poca, es cierto) con ideas, un mínimo de conocimiento y ganas de ayudar a la gente que como yo no tienen ni la más remota idea de programar.
Yo, la verdad, siempre he sido un negado en estos temas y como mucho me he limitado a probar lo que otros han llegado a crear siguiendo los pasos uno a uno como los niños y aprendiendo de los fallos.
En mi caso he tenido que ingeniarmelas para conseguir conexión a internet en los hackintosh a través de un USB de D-Link (G-122) con los drivers propios y los de Ralink, y aunque funciona perfectamente es un poco engorroso porque en el PC de sobremesa tengo un wifi USB que no es nada compatible con MAC (un thomsom, para la Livebox de Orange); y en el portatil, la tarjeta que lleva (la intel 3945) tampoco pirula en mac.
Así que seguramente probaré a ver que tal y ya te iré contando. A ver si puedo librarme al menos de un USB (porque en el de sobremesa por narices tiene que ir al menos uno porque el router inalámbrico está en otro sitio.
Saludos, ánimo y gracias por tu esfuerzo.
 
L

luchodv00

Guest
Muy interesante el proyecto!

Hoy lo probaré con unos cuantos modems usb que hay en mi casa. Sobre todo con el Speedtouch 330 que tantos dolores de cabeza me ha causado. Si consigo algún progrso les aviso.

Gracias!
 

CodeMachine

Activo
Pues mas me alegra a mi que alguien responda.. aunque el driver lo hize para mi (dado que se como hacerlo) no me parece justo que un codigo LIBRE iniciado por Apple solo lo disfrutara yo.

El driver podria funcionarte incluso con el wifi USB que comentas.. siempre y cuando el interfaz que use sea CDC/ECM (Ethernet Networking Control Model).

Desconozco el funcionamiento del driver utilizando varios dispositivos al mismo tiempo, te recomiendo que los pruebes por separado primero.. cuando sepas que funciona.. los pruebas a la vez.. vete por pasos.. y preguntame cualquier duda.

Una forma de saber si es asi.. es mirando en windows como te detecta cada dispositivo.. si te lo reconoce como una TARJETA DE RED es muy problable que te funcione con este driver, aunque hay otros interfaces con funcionamiento similar, pero el ECM es el unico que simula una Ethernet, por ese motivo la mayoria de los modem o router con soporte USB suelen utilizar ese interfaz.

uchodv00 si tienes varios modem genial.. pegame el idProduct y idVendor y los añadire a la lista para futuras versiones del driver. Si te da proglemas alguno pegame todo texto que pone el driver en el terminal con eso puedo ver cual es el problema.. si no, hay otras alternativas.

Bye :)
 

falvear

Activo
Hola, disculpen, soy nuevo en esto.
Resulta que buscando encontré esto que puede ser la solución a mi problema. tengo un modem speedtouch 330 y quería saber qué tengo que poner en eso de VENDOR ID y PRODUCT ID... ya que parece que hay que poner un numero entero pero mis ids son:
VID: 06B9
PID: 4061

¿? Eso, de antemano gracias y disculpen si la pregunta es muy básica pero realmente quiero probar este driver en mi hackintosh

Saludos!
 

CodeMachine

Activo
En los dispositivos USB hay que poner el idProduct y el idVendor en Decimal, tus valores son estos.

idVendor: 1721

idProduct: 16481

Tambien se puede poner en decimal pero no es muy recomendable, es añaciendo un 0x primero, quedaria asi:

idVendor: 0x06B9

idProduct: 0x4061

Continua con el resto de las instrucciones que puse, alguna duda que tengas preguntame.

Bye :)
 

falvear

Activo
Hola, muchas gracias por la aclaración anterior, qué rapido.

Intenté hacerlo nuevamente pero no resultó. Al escribir dmesg no me aparece nada relacionado con USBCDCEthernet ....

Ojalá esté haciendo algo mal para que me resulte pues tengo muchas ganas de que resulte.

Otra pregunta: en la ayuda dice "Entra en el archivo USBCDCEthernet.kext y edita el archivo info.plist"

¿Cómo entro en el archivo USBCDCEthernet.kext? porque donde yo encuentro el archivo info.plist es en la carpeta que acaba de ser descomprimida.

Cabe mencionar que sí me detecta el módem en los dispositivos USB, pero no funciona como módem.

Eso, muchas gracias y felicitaciones a todos por este foro que he encontrado porque se ve bien bueno.

Saludos!
 

falvear

Activo
Por si acaso, lo que me sale en el terminal es:

Código:
fernando-alvears-computer:~ root# cd /System/Library/Extensions/
fernando-alvears-computer:/System/Library/Extensions root# chmod -R 755 USBCDCEthernet.kext
fernando-alvears-computer:/System/Library/Extensions root# chown -R root:wheel USBCDCEthernet.kext
fernando-alvears-computer:/System/Library/Extensions root# kextload -v USBCDCEthernet.kext
kextload: extension USBCDCEthernet.kext appears to be valid
kextload: loading extension USBCDCEthernet.kext
kextload: USBCDCEthernet.kext loaded successfully
kextload: loading personalities named:
kextload:     USBCDCEthernet
kextload: sending 1 personality to the kernel
kextload: matching started for USBCDCEthernet.kext
fernando-alvears-computer:/System/Library/Extensions root# dmesg
hi mem tramps at 0xffe00000
PAE enabled
64 bit mode enabled
enabling INTEL features
standard timeslicing quantum is 10000 us
vm_page_bootstrap: 123141 free pages
mig_table_max_displ = 71
Enabling XMM register save/restore and SSE/SSE2 opcodes
Skipping duplicate extension "com.apple.driver.AppleRTL8139Ethernet" with older/same  version (1.2.0 -> 1.2.0).
ACPI CA 20051117 [debug level=0 layer=0]
AppleIntelCPUPowerManagement: ready
AppleACPICPU: ProcessorApicId=1 LocalApicId=0 Enabled
AppleACPICPU: ProcessorApicId=2 LocalApicId=1 Enabled
PASSED! ...maximum protection of commpage set ALL
Copyright (c) 1982, 1986, 1989, 1991, 1993
        The Regents of the University of California. All rights reserved.

using 2621 buffer headers and 2621 cluster IO buffer headers
Enabling XMM register save/restore and SSE/SSE2 opcodes
IOAPIC: Version 0x20 Vectors 0:23
Started CPU 01
ACPI: System State [S0 S3 S4 S5] (S3)
Security auditing service present
BSM auditing present
disabled
From path: "uuid", 
Waiting for boot volume with UUID 69AAD117-0D88-3AD6-8A99-057B2463C799
Waiting on <dict ID="0"><key>IOProviderClass</key><string ID="1">IOResources</string><key>IOResourceMatch</key><string ID="2">boot-uuid-media</string></dict>
USB caused wake event (EHCI)
FireWire (OHCI) VendorID 1106 ID 3044 PCI now active, GUID 0011066640017435; max speed s400.
Got boot device = IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IDE1@1F,2/AppleIntelPIIXATARoot/CHN0@0/AppleIntelICHxSATA/ATADeviceNub@0/IOATABlockStorageDriver/IOATABlockStorageDevice/IOBlockStorageDriver/WDC WD800JD-60LSA0 Media/IOFDiskPartitionScheme/Untitled 3@3
BSD root: disk1s3, major 14, minor 3
Jettisoning kernel linker.
Resetting IOCatalogue.
display: family specific matching fails
Matching service count = 3
Matching service count = 4
Matching service count = 4
Matching service count = 4
Matching service count = 4
Matching service count = 6
Apple16X50ACPI1: Identified Serial Port on ACPI Device=UAR1
Apple16X50UARTSync1: Detected 16550AF/C/CF FIFO=16 MaxBaud=115200
NVDANV40HAL loaded and registered.
display: family specific matching fails
display: family specific matching fails
display: family specific matching fails
Natit: Starting.
Natit: Setting @0,NVMT=<data not shown>
Natit: Setting device_type=NVDA,Parent
Natit: Setting @1,device_type=display
Natit: Setting @0,compatible=NVDA,NVMac
Natit: Setting @1,compatible=NVDA,NVMac
Natit: Setting @0,fboffset=0x00020000
Natit: Setting @1,name=NVDA,Display-B
Natit: Setting @0,name=NVDA,Display-A
Natit: Setting NVCAP=<data not shown>
Natit: Setting @0,device_type=display
Natit: Setting model=GeForce 6200
IPv6 packet filtering initialized, default to accept, logging disabled
AppleIntel8254XEthernet: Ethernet address 00:13:d4:a7:a9:dc
Intel8254x -- Link down -- 00:13:d4:a7:a9:dc -- called by enableHardware() -- 
--        Auto-Neg Advertise Reg (04d) = 0xde1, Link Partner Ability Reg (05d) = 0x0, Gig Advertise Reg (09d) = 0x200, Gig Link Partner Ability Reg (10d) = 0x0
NVDA,Display-A: vram [e0020000:08000000]
NVDA,Display-B: vram [00000000:01000000]
(100: coreservicesd)tfp: failed on 0:
fernando-alvears-computer:/System/Library/Extensions root#
 

CodeMachine

Activo
Ya se lo que hiciste mal... a ver, el info.plist que ves primero no lo tienes que tocar, olvidate de el..

Vete a la carpeta RELEASE ahi esta el driver.. que por lo que he visto supiste como copiarlo, ponerle los permisos y cargarlo.. pues bien.. dale al BOTON derecho del raton sobre ese archivo te salen varias opciones.. la 3º por arriba creo que es te pone algo de ver el contenido (no recuerdo la opcion, hace poco que uso el MAC OS) y entronces entraras dentro del KEXT (si es como una carpeta, de hecho lo es, pero MAC OS no te deja verlo como carpeta) ahi es donde esta el INFO.PLIST que tienes que modificar.

(primero modifica el info.plist del kext y luego copialo de nuevo en extensions, ponle los permisos, NO modifiques el info.plist que tienes ya puesto en estensions, ok?)

La parte BUENA, el driver se te carga perfectamente en tu MAC OS y no te da ningun error, eso ya es algo positivo.. por lo menos para mi. :)

Bye :)
 
L

luchodv00

Guest
Speedtouch330

Lamentablemente, no me va en el speedtouch330. Me dice que no encuentra una interfaz enthernet valida. Creo que debe ser por los firmwares, ya que las veces que lo he hecho funcionar en windows y linux, debe cargar 2 archivos, que son ZZZLP1.eni y el ZZZLP2.eni. Estos se encuentran dentro del .ketx de ppc y quizas sean el problema.
 

CodeMachine

Activo
Pues si te pone eso, lamentablemente no es compatible con el interfaz CDC/ECM, el driver hace muchas mas pruebas pero esa es la mas importante, las demas podrian ser retocadas (que eso es lo que quiero ver) pero si no pasa de ahi.. no hay nada que hacer.

Esos archivos que comentas, tienen pinta de ser una UART (es modulador de señal, cualquier dispositivo de comunicacion lo tiene) por software, normalmente la UART es un componente de hardware, aunque se puede emular por soft, hace años salieron unos modem 56k que solo funcionaban en windows (los llamados SOFTMODEM) esto solo es una hipotesis mia, esos archivos pueden ser cualquier cosa.

Bye :)
 

CodeMachine

Activo
Ah!! no habia entendido lo ultimo.. que los viste en los kext de PPC?? pero que archivo? el USBCDCEthernet de la web de Apple??? o te refieres a los driver oficiales del modem??

Si es los de Apple... puedo mirarlo a ver si tengo forma de adaptarlo.. pero no te doy esperanzas y mucho menos sin tener tu modem... pero que por intentarlo.. que no quede.

Bye :)
 
Arriba