Tim Roberts | 1 Aug 2007 01:01

Re: Data transfer fails with nokia phones

Gábor Fekete wrote:
> I try to use obexftp to send files to Nokia phones via
> USB on Linux.
>
> I realized that for certain file sizes (and file names)
> the obexftp file transfer (--put) fails.
>
> I tracked down the problem to libusb. The function that
> fails is in linux.c. It is usb_urb_transfer().
>
> It has a while loop that looks like this:
>
> while (!urb.usercontext && ((ret =
>        ioctl(dev->fd,IOCTL_USB_REAPURBNDELAY, &context)) == -1)
>        && waiting) {
> ...
> }
>
> Here the ioctl always returns -1 with errno saying
> "Device or resource busy".
> After this, it times out and obexftp exits and reports
> that the ____file transfer failed____.
>   

It sounds like the obexftp folks set their timeout too small. 
REAPURBNDELAY simply asks, "have any pending USB operations completed?" 
"Device or resource busy" just means that none have completed yet.

> Again, it is very wierd that if you try it with even a renamed file,
> (e.g. data.data instead of data.dat) the operation succeeds.
(Continue reading)

Paul Toritz | 2 Aug 2007 01:56
Picon

Request for information regarding Linux driver

Hi,

I submitted this via your web request form yesterday, but received no reply so
I am emailing you directly.

I recently downloaded your Linux driver for the "Zytronic, 10 Bit,
USB" touchscreen.
During a superficial examination of the download i found that one of
the binaries
(tbupddlx) was statically linked to a Free Software/Open Source library called
libusb:

    http://libusb.sourceforge.net/

What I did was:

       paul ~ strings tbupddlx | grep usb
       usbhid
       usb_set_debug: Setting debugging level to %d (%s)
       usb_os_find_busses: Skipping non bus directory %s
       usb_os_find_busses: Found %s
       usb_os_find_devices: Couldn't open %s
       usb_os_find_devices: couldn't get connect info
       usb_os_find_devices: Couldn't read descriptor
       usb_os_find_devices: Found %s on %s
       usb_os_init: couldn't find USB VFS in USB_DEVFS_PATH
       /proc/bus/usb
       /sys/bus/usb
       /dev/usb
       usb_os_init: Found USB VFS at %s
(Continue reading)

David Hooker | 2 Aug 2007 16:40

Re: Windows implementation and TCK

Libusb is designed as a thin wrapper around the usb subsystem of the OS, which is exactly
why I chose it over javax-usb, and it works great for me.  I would hate to see Libusb get bloated
with a bunch of unnecessary stuff just to support javax-usb running on top of it.
-----Original Message-----
From: javax-usb-devel-bounces <at> lists.sourceforge.net [mailto:javax-usb-devel-bounces <at> lists.sourceforge.net]On Behalf Of Islam Beltagy
Sent: Thursday, August 02, 2007 2:57 AM
To: javax-usb-devel <at> lists.sourceforge.net
Subject: [javax-usb-devel] Windows implementation and TCK

Hi,

I am working in the Libusb implementation for Windows.
I found that the implementation requires these changes:
1-In Libusb:
    Build the correct hierarchy of hubs and devices
    Return number of ports of hubs and speed of devices
    Support asynchronous control submission
    Support short packets
    Support the Topology listener
2-In the Java implementation:
    Necessary changes after changing Libusb
    Get use of already implemented asynchronous IO
    Get use of already implemented Isochronous pipe.

I hope I can do these changes soon. If you have any comments or help or advices, they are really appreciated.
I hope I can pass the TCK.

Thank you for your help

bye
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
javax-usb-devel mailing list
javax-usb-devel <at> lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/javax-usb-devel
Dan Streetman | 2 Aug 2007 17:58
Picon

Re: Windows implementation and TCK

Geez, thanks for the ray of sunshine.  Feel free to comment on the technical points anytime! ;-)

On 8/2/07, David Hooker < dhooker <at> e2eft.com> wrote:
Libusb is designed as a thin wrapper around the usb subsystem of the OS, which is exactly
why I chose it over javax-usb, and it works great for me.  I would hate to see Libusb get bloated
with a bunch of unnecessary stuff just to support javax-usb running on top of it.
-----Original Message-----
From: javax-usb-devel-bounces <at> lists.sourceforge.net [mailto:javax-usb-devel-bounces <at> lists.sourceforge.net]On Behalf Of Islam Beltagy
Sent: Thursday, August 02, 2007 2:57 AM
To: javax-usb-devel <at> lists.sourceforge.net
Subject: [javax-usb-devel] Windows implementation and TCK

Hi,

I am working in the Libusb implementation for Windows.
I found that the implementation requires these changes:
1-In Libusb:
    Build the correct hierarchy of hubs and devices
    Return number of ports of hubs and speed of devices
    Support asynchronous control submission
    Support short packets
    Support the Topology listener
2-In the Java implementation:
    Necessary changes after changing Libusb
    Get use of already implemented asynchronous IO
    Get use of already implemented Isochronous pipe.

I hope I can do these changes soon. If you have any comments or help or advices, they are really appreciated.
I hope I can pass the TCK.

Thank you for your help

bye

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
javax-usb-devel mailing list
javax-usb-devel <at> lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/javax-usb-devel


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
javax-usb-devel mailing list
javax-usb-devel <at> lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/javax-usb-devel
Helge Bragstad | 4 Aug 2007 15:14

usb_bulk_read hangs on Linux under VMware

Hello,

I have problem using USB smart card readers with RedHad EL5 and Mandriva 
2007, running as guest under VMware (both v5 and v6) on a WinXP SP2 host. 
Certain commands cause the communication to hang. I use the latest pcsc-lite 
1.4.3, ccid-1.3.0 and libusb-0.1.12. The offending commands seem to be those 
that retrieve data from the card where retrieved data length is 256 or 
greater (includes data and protocol headers). The offending command in 
itself completes ok, but the one that follows right after hangs. Tracing it 
down to libusb, it hangs in the function usb_urb_transfer, more specifically 
in the loop:

while (!urb.usercontext && ((ret = ioctl(dev->fd, IOCTL_USB_REAPURBNDELAY, 
&context)) == -1) && waiting) {...}

Same problem for a variety of readers, (Reflex USB v3, Gemplus GemPC Twin, 
Omnikey Cardman 3021). Sending data *to* the the card of any length works 
ok, also retrieving data *from* the card of length 255 or shorter works fine 
as well.

When running Linux natively on the same hardware, it works fine, so it may 
of course be a VMvare issue.

Still hoping that it can solved at libusb level, ideas anyone?

- Helge Bragstad

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
Paul Toritz | 10 Aug 2007 00:28
Picon

Re: Request for information regarding Linux driver

On 8/9/07, Dave Bhattacharjee <dave <at> touch-base.com> wrote:
> Thank you for bringing this to our attention.
>
> We will update our download text and software licence to acknowledge use
> of this library.

Thank you. Please inform me and the libusb-devel mailing list when this
is in place.

> A driver utilising a different libusb will be totally unsupported by us.
> Why do you need to replace the library?

I don't need it any more because I wrote my own driver for the zytouch screen.

Quite frankly, your driver (and its installation) was crap.

Regards,
Erik

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
Peter Stuge | 10 Aug 2007 01:00

Re: Request for information regarding Linux driver

Hello,

On Thu, Aug 02, 2007 at 09:56:45AM +1000, Paul Toritz wrote:
> Finally, you should also provide me with the object files required
> to replace your version of libusb in the tbupddlx executable as per
> the libusb license.

On Fri, Aug 10, 2007 at 08:28:39AM +1000, Paul Toritz wrote:
> On 8/9/07, Dave Bhattacharjee <dave <at> touch-base.com> wrote:
> > Thank you for bringing this to our attention.
> >
> > We will update our download text and software licence to
> > acknowledge use of this library.

Glad to hear it! Please make sure you're following the complete LGPL
as found in the files COPYING and LICENSE in the libusb source tree.

> > A driver utilising a different libusb will be totally unsupported
> > by us. Why do you need to replace the library?

This is a requirement of the libusb license, specifically section 6.

As pointed out before it's not about support from Touch-Base, it's
about Touch-Base distributing software illegally. That does noone
any good. Please read the libusb license carefully. Feel free to ask
the mailing list if you have questions, we'll try to help you out.

> I don't need it any more because I wrote my own driver for the
> zytouch screen.

Too bad Touch-Base didn't work with the community to make a
completely open source driver instead, maybe this double work
could have been avoided then.

//Peter

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
Juliet Ruguru | 9 Aug 2007 11:51
Picon

usb_interrupt_reader()

Hi All,

I am developing an application that should support reading from a magnetic stripe reader and pin pad (in one unit). Am using the INGENICO 3070 Pinpad.

I came across a program posted on the libusb-devel mailing list: usb_interrupt_read -- magnetic card reader.

The usb_interrupt_read function returns -22 and times out without waiting for input from the card reader.

How do I go about this problem so that the application can wait for input from the card reader.

Any help is highly appreciated.

Thanks

Juliet.



The device descriptor attributes and values are:

Dev #8: Silicon Labs - Ingenico 3070
  - Serial Number: 0001
  wTotalLength:         32
  bNumInterfaces:       1
  bConfigurationValue:  1
  iConfiguration:       0
  bmAttributes:         80h
  MaxPower:             250
    bInterfaceNumber:   0
    bAlternateSetting:  0
    bNumEndpoints:      2
    bInterfaceClass:    255
    bInterfaceSubClass: 0
    bInterfaceProtocol: 0
    iInterface:         2
      bEndpointAddress: 81h
      bmAttributes:     02h
      wMaxPacketSize:   64
      bInterval:        0
      bRefresh:         0
      bSynchAddress:    0
      bEndpointAddress: 01h
      bmAttributes:     02h
      wMaxPacketSize:   64
      bInterval:        0
      bRefresh:         0
      bSynchAddress:    0

The program(libusb-devel mailing list) is here:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <usb.h>

/// some values to distinguish the card reader (values may vary from vendor to vendor)
#define CRD_RDR__VENDOR_ID 2816 ///0x0b00
#define CRD_RDR__PRODUCT_ID 12400 ///0x3070
#define CRD_INRPT_INTERFACE 0
#define CRD_INRPT_ENDPOINT 0x81
#define READ_BUFFER_SIZE_B 512
#define READ_INRPT_TIMEOUT 31800


/// PROTOTYPES ......../
int claimCrdRdrInrptInterface(usb_dev_handle *devHandle, int useKernel);
void initLibusb();
int isCardReader(u_int16_t idVendor, u_int16_t idProduct);
usb_dev_handle *getCardReader();
int blockForCardSwipe(usb_dev_handle *devHandle);
void print_endpoint(struct usb_endpoint_descriptor *endpoint);
void print_altsetting(struct usb_interface_descriptor *interface);
void print_configuration(struct usb_config_descriptor *config);
void received_packet(unsigned char *buffer) {
  if (buffer[0] == 0x00 && buffer[1] != 0x00) {
    fwrite(buffer+2, 6, 1, stdout);
  }
}
/// MAIN METHOD ......../
int main(int argv, char *argc[])
{
    usb_dev_handle *crdRdr_handle = NULL;
    int retval = 0;

    /* This magickal packet seems to wake it up */
        unsigned char ep2_packet[8] = {
        0x20, 0x10, 0x24, 0x4c, 0x54, 0x43, 0x2c, 0x31,};

    unsigned char buffer[8];

    initLibusb(); // initialize libusb

    /// get a handle to the card reader
    if((crdRdr_handle = getCardReader()) == NULL)
    {
        printf("ERROR getting the card reader\n");
        exit(1);
    }

    /// claim the swipe interface
    if(argv == 3)
    { // support dynamic decsion to detach from the kernel
        if(claimCrdRdrInrptInterface(crdRdr_handle, atoi(argc[2]))!= 1)
        {
            printf("ERROR claiming the swipe interface\n");
            exit(1);
        }
    }
    else
    {
        if(claimCrdRdrInrptInterface(crdRdr_handle, 1)!= 1)
        {
            printf("ERROR claiming the swipe interface\n");
            exit(1);
        }
    }


    if(argv >= 2)
    { // support dynamic descision to attempt to read
        if(atoi(argc[1]) == 1)
        {
            blockForCardSwipe(crdRdr_handle);
        }
    }

    usb_release_interface(crdRdr_handle, 0);

    usb_close(crdRdr_handle);
    exit(0);
}

/// IMPLEMENTATION ........./
/**
* claimCrdRdrInrptInterface()
* attempt to claim the card reader interface that can be used to  data from a card swipe
* return 1 on success; 0 on failure
* the useKernel parameter determines whether or not to detach from the kernel driver
* 0 will continue to use the kernel; 1 will detach from the kernel
*/
int claimCrdRdrInrptInterface(usb_dev_handle *devHandle, int useKernel)
{
    int claimSuccess = 0;
    printf("--> Entering claimCrdRdrInrptInterface(); input, pointer to usb_dev_handle\n");
    //// TODO: SUPPORT THIS THROUGH A COMMAND LINE OPTION
    if(useKernel == 0)
    {
        /// detach the kernel driver (this seems to be a requirement, because usb hid is hogging this at first
        if (LIBUSB_HAS_DETACH_KERNEL_DRIVER_NP && (usb_detach_kernel_driver_np(devHandle, (int)     CRD_INRPT_INTERFACE) < 0))
        {
            fprintf(stderr, "Could not detach kernel driver %s\n", usb_strerror());
        }
        else
        {
            printf("Sucessfully detached from the kernel.\n");
        }
    }

    /// attempt to claim the interface
    claimSuccess = usb_claim_interface(devHandle, CRD_INRPT_INTERFACE);

    /// analyze the results of the claim attempt
    if(claimSuccess == 0)
    {
        claimSuccess = 1;
        printf("%s", "The card reader interface was claimed!\n");
    }
    else
    {
        printf("%s %i %s", "Claim Failure! Return value from claim:", claimSuccess, "\n");
    }

    printf("<-- Exiting claimCrdRdrInrptInterface(); claimSuccess: %i\n", claimSuccess);
    return claimSuccess;
}

/**
* initLibusb()
* run methods required to initialize the libusb library
*/
void initLibusb()
{
    /// calls to initialize the libusb library
    printf("--> Entering initLibusb(), no inputs\n");
    usb_init();
    usb_find_busses();
    usb_find_devices();
    printf("<-- Exiting initLibusb(), library initialized\n");
}

/**
* isCardReader()
* scan the device descriptor vendor and product ids against the values know to match those of the usb
* card reader. if there is a match for both values return 1, otherwise return 0.
*/
int isCardReader(u_int16_t idVendor, u_int16_t idProduct)
{
    int isCardReader = 0;

    printf("--> Entering isCardReader(); idVendor: %i, idProduct: %i\n", idVendor, idProduct);
    if((idVendor == CRD_RDR__VENDOR_ID) && (idProduct == CRD_RDR__PRODUCT_ID))
    {
        isCardReader = 1;
    }
    else
    {
        isCardReader = 0;
    }
    printf("<-- Exiting isCardReader(); isCardReader: %i\n", isCardReader);
    return isCardReader;
}

/**
* getCardReader()
* loop through all available busses searching for the usb card reader
* if the card reader is found return a pointer to the handle
* other wise return NULL
*/
usb_dev_handle *getCardReader()
{
    struct usb_bus *curBus;
    struct usb_device *curDev;
    struct usb_dev_handle *handle = NULL;
    int foundCrdRdr = 0, gth = 0;

    printf("--> Entering getCardReader(); no inputs\n");

    /// cycle through the USB busses on localhost
    for (curBus = usb_busses; curBus; curBus = curBus->next)
    {
        for (curDev = curBus->devices; curDev; curDev = curDev->next)
        { // cycle through the devices on curBus
            /// check if curDev is the card reader
            if(isCardReader(curDev->descriptor.idVendor, curDev->descriptor.idProduct) == 1)
                {
                    printf("The card reader has been found.\n", CRD_RDR__VENDOR_ID, CRD_RDR__PRODUCT_ID);
                    /// attempt to open the card reader
                    if (!(handle = usb_open(curDev)))
                    {
                        fprintf(stderr, "Could not open the card reader!\n");
                    }
                    foundCrdRdr = 1;
                    break;
                }
        }
        if(foundCrdRdr == 1)
        { // no need to process additional busses after finding the card reader
            break;
        }
    }
    if(handle == NULL)
    {
        printf("<-- Exiting getCardReader(); the card reader handle was NOT obtained\n");
    }
    else
    {
        printf("<-- Exiting getCardReader(); the card reader handle was obtained\n");
    }
    //gth = usb_set_configuration(handle, 1);
    //printf("\n GTH: %d", gth);
    return handle;
}

/**
* blockForCardSwipe()
* internally call the usb_interrupt_read() method of libusb which is an asyncronous
* method. this method will internally issue the call until usb_interrupt_read()
* returns finds data.
//// TODO: RUN THESE CALLS INSIDE OF A THREAD
*
*/
int blockForCardSwipe(usb_dev_handle *devHandle)
{
    int swipeReadSuccess = 0; // 1 indicates success
    char *swipeData; // storage of payload
    int timeout = 300; //READ_INRPT_TIMEOUT; // 5 minutes if metric is seconds
    int bufsize = 512;
    int uirResult = 0; // store the result of the card swipe
   
    swipeData = malloc(512 * sizeof(char));
    printf("--> Entering blockForCardSwipe(); input, pointer to usb device handle\n");
    printf("Waiting %i seconds for input...\n", timeout);
    //printf("\nUSB Endpoint IN: %d",USB_ENDPOINT_OUT);

    //int usb_interrupt_read(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout);
   
    while((uirResult = usb_interrupt_read(devHandle, 0x81, swipeData, 128, timeout)) >= 0)
    {
        //printf("ERROR reading input from interrupt pipe: %i\n", uirResult);
        //if(swipeData != NULL) {
        printf("value from read method: %i;\n", uirResult);
       
        int curCRDataByte;
        for(curCRDataByte = 0; curCRDataByte < READ_BUFFER_SIZE_B; curCRDataByte++)
        {
            // printf("%02x ", ((int)swipeData[curCRDataByte] & 0x0ff));
            printf("%c", swipeData[curCRDataByte]);
        }
        // break;
        //}
    }
   
    //printf("DATA from card swipe: %u\n", swipeData);
    printf("\nInterrupt return value is: %d\n",uirResult);
    printf("<-- Exiting blockForCardSwipe(); swipeReadSuccess: %i\n", swipeReadSuccess);

    return swipeReadSuccess;
}

///----- INFORMATIVE DATA OUTPUT FUNCTIONS -- these are provided in the sample code shipped from libusb in testlibusb.c
/// TODO: THESE NEED TWEAKED
void print_endpoint(struct usb_endpoint_descriptor *endpoint)
{
    printf(" bEndpointAddress: %02xh\n", endpoint->bEndpointAddress);
    printf(" bmAttributes: %02xh\n", endpoint->bmAttributes);
    printf(" wMaxPacketSize: %d\n", endpoint->wMaxPacketSize);
    printf(" bInterval: %d\n", endpoint->bInterval);
    printf(" bRefresh: %d\n", endpoint->bRefresh);
    printf(" bSynchAddress: %d\n", endpoint->bSynchAddress);
}

void print_altsetting(struct usb_interface_descriptor *interface)
{
    int i;

    printf(" bInterfaceNumber: %d\n", interface->bInterfaceNumber);
    printf(" bAlternateSetting: %d\n", interface->bAlternateSetting);
    printf(" bNumEndpoints: %d\n", interface->bNumEndpoints);
    printf(" bInterfaceClass: %d\n", interface->bInterfaceClass);
    printf(" bInterfaceSubClass: %d\n", interface->bInterfaceSubClass);
    printf(" bInterfaceProtocol: %d\n", interface->bInterfaceProtocol);
    printf(" iInterface: %d\n", interface->iInterface);

    for (i = 0; i < interface->bNumEndpoints; i++)
        print_endpoint(&interface->endpoint[i]);
}

void print_interface(struct usb_interface *interface)
{
    int i;

    for (i = 0; i < interface->num_altsetting; i++)
        print_altsetting(&interface->altsetting[i]);
}

void print_configuration(struct usb_config_descriptor *config)
{
    int i;

    printf(" wTotalLength: %d\n", config->wTotalLength);
    printf(" bNumInterfaces: %d\n", config->bNumInterfaces);
    printf(" bConfigurationValue: %d\n", config->bConfigurationValue);
    printf(" iConfiguration: %d\n", config->iConfiguration);
    printf(" bmAttributes: %02xh\n", config->bmAttributes);
    printf(" MaxPower: %d\n", config->MaxPower);

    for (i = 0; i < config->bNumInterfaces; i++)
        print_interface(&config->interface[i]);
}



-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
Libusb-devel mailing list
Libusb-devel <at> lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libusb-devel
Dave Bhattacharjee | 9 Aug 2007 14:05

Re: Request for information regarding Linux driver

 Hi Paul,

Thank you for bringing this to our attention.

We will update our download text and software licence to acknowledge use
of this library.

We are working towards the next production version of the driver and we
will make the required objects available, on request, with this release,
currently due out in September.

A driver utilising a different libusb will be totally unsupported by us.
Why do you need to replace the library?

Regards

Dave

-- 
Dave Bhattacharjee
Touch-Base Ltd
dave <at> touch-base.com
tel:+44 (0) 1202 733767
fax: +44 (0) 1202 735512
www.touch-base.com
www.touchit.com - the touch industrial portal

> -----Original Message-----
> From: Paul Toritz [mailto:paul.toritz <at> gmail.com] 
> Sent: 02 August 2007 00:57
> To: Dave Bhattacharjee
> Cc: libusb-devel <at> lists.sourceforge.net
> Subject: Request for information regarding Linux driver
> 
> Hi,
> 
> I submitted this via your web request form yesterday, but 
> received no reply so I am emailing you directly.
> 
> I recently downloaded your Linux driver for the "Zytronic, 10 
> Bit, USB" touchscreen.
> During a superficial examination of the download i found that 
> one of the binaries
> (tbupddlx) was statically linked to a Free Software/Open 
> Source library called
> libusb:
> 
>     http://libusb.sourceforge.net/
> 
> What I did was:
> 
>        paul ~ strings tbupddlx | grep usb
>        usbhid
>        usb_set_debug: Setting debugging level to %d (%s)
>        usb_os_find_busses: Skipping non bus directory %s
>        usb_os_find_busses: Found %s
>        usb_os_find_devices: Couldn't open %s
>        usb_os_find_devices: couldn't get connect info
>        usb_os_find_devices: Couldn't read descriptor
>        usb_os_find_devices: Found %s on %s
>        usb_os_init: couldn't find USB VFS in USB_DEVFS_PATH
>        /proc/bus/usb
>        /sys/bus/usb
>        /dev/usb
>        usb_os_init: Found USB VFS at %s
>        usb_os_init: No USB VFS found, is it mounted?
> 
> The above is a clear sign that your executable contains a 
> statically linked version of libusb.
> 
> However, libusb is licensed under the GNU LGPL version 2.1
> 
>     http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
> 
> and according to section 6 of that license, you must provide 
> a means whereby I can replace and/or debug the LGPL library 
> part of your executable.
> 
> Whats more, simply by using that library, you *must* provide 
> an acknowledgement that the library is being used, its 
> license terms and either:
> 
>    a) the object code for your binaries so I can link another 
> version of the
>        library
> 
> or
> 
>    b) a written offer to provide the above.
> 
> What you now need to do to comply with the libusb license is:
> 
>     a) Add to your download an acknowledgment that libusb is 
> being used and
>         that it is licensed under the GNU LGPL.
> 
>    b) Add either the object files so that the tbupddlx 
> executable can be relinked
>        against a different version of libusb or provide a 
> written offer to provide
>        such files on request.
> 
> Finally, you should also provide me with the object files 
> required to replace your version of libusb in the tbupddlx 
> executable as per the libusb license.
> 
> Regards,
> Paul
> 
> PS : This email has been CC-ed to the libusb-devel mailing list.
> 

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
Greg KH | 10 Aug 2007 04:36
Gravatar

Re: Request for information regarding Linux driver

On Fri, Aug 10, 2007 at 08:28:39AM +1000, Paul Toritz wrote:
> On 8/9/07, Dave Bhattacharjee <dave <at> touch-base.com> wrote:
> > Thank you for bringing this to our attention.
> >
> > We will update our download text and software licence to acknowledge use
> > of this library.
> 
> Thank you. Please inform me and the libusb-devel mailing list when this
> is in place.
> 
> > A driver utilising a different libusb will be totally unsupported by us.
> > Why do you need to replace the library?
> 
> I don't need it any more because I wrote my own driver for the zytouch screen.
> 
> Quite frankly, your driver (and its installation) was crap.

Wow, that sure is constructive :(

Seriously, if you have specific issues, please feel free to point them
out, but just sending emails like this is going to get you nowhere.

greg k-h

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/

Gmane