Re: No puede ser tan difí cil: Palm T|X
On Fri, Mar 10, 2006 at 01:39:55PM +0100, VictorSanchez2 wrote: Ojalá logres que te funcione. Ya que salga voy a juntar todo esto y hacer un README para que lo incluyan en pilot-link. Volveré a intentarlo a ver si hacemos que funcione. Gracias por todo. ¿Todavía andas con este problema? En la lista de pilot-link-dev acaba de llegar un parche relacionado a no-sé-que problema que afecta a la T|X y la LifeDrive. Te anexo el parche, a ver si te sirve. - Forwarded message from Daniel Gollub [EMAIL PROTECTED] - Subject: LiveDrive-issue fix for libusb connection From: Daniel Gollub [EMAIL PROTECTED] Date: Mon, 3 Jul 2006 17:39:09 +0200 To: pilot-link Development List [EMAIL PROTECTED] Organization: SUSE Linux Products GmbH X-gnu-designs.com-MailScanner: Found to be clean, Found to be clean Reply-To: pilot-link Development List [EMAIL PROTECTED] X-MailScanner-From: [EMAIL PROTECTED] Hi, i have written a small fix for the LiveDrive-issue, which was discussed few days ago in #pilot-link channel. Now i am able to sync the Palm T|X without re-plugging the device. The problem is that the device is listed in the known_devices table but doesn't fail in USB_configure_device and is listing until the device disappears, when the hotsync starts = sync fails. The fix lets USB_poll() skip the known devices which are unconfigured and avoid that USB_poll() is only called once by u_wait_for_device(). So USB_poll() is called until the device appears again and gets successfully configured. Debug output is also attachted, if somebody is interested. Tested with Palm T|X. best regards, Daniel --- pilot-link-0.12.0/libpisock/libusb.c +++ pilot-link-0.12.0/libpisock/libusb.c @@ -138,6 +138,11 @@ USB_in_endpoint = USB_out_endpoint = 0xFF; ret = USB_configure_device (data, input_endpoint, output_endpoint); + if (ret 0) { + LOG((PI_DBG_DEV, PI_DBG_LVL_DEBUG, %s: USB configure failed for familar device: 0x%04x 0x%04x. (LifeDrive issue?!)\n, __FILE__, dev-descriptor.idVendor, dev-descriptor.idProduct)); + usb_close(USB_handle); + continue; + } for (i = 0; i dev-config[0].interface[0].altsetting[0].bNumEndpoints; i++) { struct usb_endpoint_descriptor *endpoint; --- pilot-link-0.12.0/libpisock/usb.c +++ pilot-link-0.12.0/libpisock/usb.c @@ -951,6 +951,9 @@ } else { /* other devices will either accept or deny this generic call */ ret = USB_configure_generic (dev, input_pipe, output_pipe); + if (ret 0) { + return -1; + } } /* query bytes available. Not that we really care, @@ -962,6 +965,8 @@ ret = dev-impl.control_request (dev, 0xc2, GENERIC_REQUEST_BYTES_AVAILABLE, 0, 0, ba[0], 2, 0); if (ret 0) { LOG((PI_DBG_DEV, PI_DBG_LVL_ERR, usb: GENERIC_REQUEST_BYTES_AVAILABLE failed (err=%08x)\n, ret)); + /* configuration have to fail to skip this device - or LiveDrive(?) devices will hang */ + return -1; } LOG((PI_DBG_DEV, PI_DBG_LVL_DEBUG, GENERIC_REQUEST_BYTES_AVAILABLE returns 0x%02x%02x\n, ba[0], ba[1])); } @@ -1017,6 +1022,7 @@ USB_configure_generic (pi_usb_data_t *dev, u_int8_t *input_pipe, u_int8_t *output_pipe) { int i, ret; + int hotsync = 0; palm_ext_connection_info_t ci; u_int32_t flags = dev-dev.flags; @@ -1031,6 +1037,9 @@ LOG((PI_DBG_DEV, PI_DBG_LVL_DEBUG, \t[%d] endpoint_info=%d\n, i, ci.connections[i].endpoint_info)); if (!memcmp(ci.connections[i].port_function_id, cnys, 4)) { + /* found hotsync port */ + hotsync = 1; + /* 'sync': we found the pipes to use for synchronization force find_interfaces to select this one rather than another one */ if (ci.endpoint_numbers_different) { @@ -1046,6 +1055,11 @@ } } } + + if (!hotsync) { + LOG((PI_DBG_DEV, PI_DBG_LVL_ERR, usb: PALM_GET_EXT_CONNECTION_INFORMATION - no hotsync port found.\n, ret)); + return -1; + } } if (flags USB_INIT_TAPWAVE) { - End forwarded message - -- Rodrigo Gallardo GPG-Fingerprint: 7C81 E60C 442E 8FBC D975 2F49 0199 8318 ADC9 BC28 -- Rodrigo Gallardo GPG-Fingerprint: 7C81 E60C 442E 8FBC D975 2F49 0199 8318 ADC9 BC28 signature.asc Description: Digital signature
Re: No puede ser tan difí cil: Palm T|X
On Thu, Mar 09, 2006 at 02:08:19AM +, VictorSanchez2 wrote: Me han regalado por mi cumpleaños una Palm T|X y la estoy intentando sincronizar. He estado intentándolo con jpilot y kpilot pero no lo consigo. ¿Alguien ha conseguido hacerla funcionar en Debian? Yo tuve bastantes problemas para hacerla funcionar. El módulo del kernel no parece llevarsebien con ella y la verdad no sabría por dónde entrarle a eso. Por otra parte, no es necesario :-) ¿Estas en testing, verdad? Lo que vamos a hacer es acceder a la palm usando libusb *en vez* del módulo del kernel. libusb es una biblioteca que permite hablar el protocolo USB desde una aplicación sin que el kernel se meta. pilot-link, en las betas para 0.12, tiene soporte para hacer esto. libusb es más rápido que el módulo y no tiene el problema que impide a la T|X funcionar (cualquiera que el problema sea). Lo malo es que pilot-link 0.12 no está en testing/unstable :-( Instala los paquetes de pilot-link (y sus dependencias, especificamente libpisock9 de la distribución 'experimental'. Ahí están empaquetados los betas de 0.12 (testing/unstable tienen 0.11.algo) La versión que está ahorita en experimental está compilada con libusb, así que vas a tener que instalar eso también. Ya que tengas eso, desactiva el cargado automático del módulo visor en el kernel. Para eso, pon un archivo en /etc/hotplug/blacklist.d/ (yo lo llamé 'palm') que contenga la linea visor (Sí, asi solito) Luego asegurate que módulo no esté cargado (por algún intento previo de sincronizar, por ejemplo) con $ rmmod visor Si eso falla, mejor reinicia. Luego hay que hacer que el acceso al dispositivo que se crea en /proc/bus/usb tenga los permisos correctos. Crea un grupo 'pilot' con los usuarios del sistema con permiso de leer/escribir de la palm cuando esté conectada. Crea un directorio /etc/pilot-link y pon ahí los archivos que están en http://nul-unu.com/quien/rodrigo/software/usbdevices.db y http://nul-unu.com/quien/rodrigo/software/pilot-link.hotplug Asegurate que exista el directorio /etc/hotplug.d/usb y pon ahí un vínculo simbólico al segundo de los archivos. $ cd /etc/hotplug.d/usb $ ln -s /etc/pilot-link/pilot-link.hotplug ¡Listo! Para sincronizar tu palm, usa 'usb:' como puerto (en vez de /dev/ttyUSB0 o lo que sea que estas usando ahora) Ojo. pilot-link 0.12 cambia sustancialmente respecto a 0.11. Eso significa que es probable que el programa de más alto nivel que uses (kpilot, gpilot, jpilot, etc) probablemente no va a funcionar. Preguntales en la lista de ese programa si ya actualizaron o cuando lo piensan hacer. Deberían hacerlo pronto, puesto que el equipo de pilot-link está próximo a liberar. Pienso trabajar con el mantenedor (¿Así se dice en español? Suena re-feo) del paquete de pilot-link en debian para incorporar esto, pero va a ser dificil por que hacer estos cambios de plano deshabilita el uso del módulo del kernel, lo cual no creo que sea un buen default para el paquete. Suerte. -- Rodrig GallardoPGP Key ID: ADC9BC28 Fingerprint: 7C81 E60C 442E 8FBC D975 2F49 0199 8318 ADC9 BC28 http://www.nul-unu.com http://www.nul-unu.com/blogs/elucubrando signature.asc Description: Digital signature
Re: No puede ser tan difí cil: Palm T|X
On Wed, Mar 08, 2006 at 10:10:31PM -0600, Luis Rodrigo Gallardo Cruz wrote: On Thu, Mar 09, 2006 at 02:08:19AM +, VictorSanchez2 wrote: Me han regalado por mi cumpleaños una Palm T|X y la estoy intentando sincronizar. Lo que vamos a hacer es acceder a la palm usando libusb *en vez* del módulo del kernel. ... Suerte. Se me olvidó mencionar. Ya que hagas todo lo que dije en el otro correo. Primero presiona el botón de hotsync de la palm y *después* corre el programa de sincronizar. -- Rodrigo GallardoPGP Key ID: ADC9BC28 Fingerprint: 7C81 E60C 442E 8FBC D975 2F49 0199 8318 ADC9 BC28 http://www.nul-unu.com http://www.nul-unu.com/blogs/elucubrando signature.asc Description: Digital signature