Re: No puede ser tan difí cil: Palm T|X

2006-07-03 Por tema Luis Rodrigo Gallardo Cruz
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

2006-03-08 Por tema Luis Rodrigo Gallardo Cruz
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

2006-03-08 Por tema Luis Rodrigo Gallardo Cruz
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