Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Chage HP Touchpad #27

Open
deerewright opened this issue Mar 15, 2013 · 11 comments
Open

Chage HP Touchpad #27

deerewright opened this issue Mar 15, 2013 · 11 comments

Comments

@deerewright
Copy link

This works great to charge my ipad (4th gen.) I would like to modify this to also charge my HP Touchpad. Here is my lsusb output for the Touchpad:

"Bus 002 Device 008: ID 0830:8072 Palm, Inc."

I tried adding to "95-ipad_charge.rules" the following:

ENV{DEVTYPE}=="usb_device", ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="0830", ATTR{idProduct}=="8072", RUN+="/usr/bin/ipad_charge"

but, I keep getting the following error:

ipad_charge: no such device or an error occured

Any ideas? Any other information I need to make this work?

here is lsusb -v output:

Bus 002 Device 008: ID 0830:8072 Palm, Inc.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x0830 Palm, Inc.
idProduct 0x8072
bcdDevice 3.27
iManufacturer 1 HP
iProduct 2 webOS-device
iSerial 3 0123456789ABCDEF
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 55
bNumInterfaces 2
bConfigurationValue 2
iConfiguration 4 ums+novcom
bmAttributes 0xc0
Self Powered
MaxPower 500mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 8 Mass Storage
bInterfaceSubClass 6 SCSI
bInterfaceProtocol 80 Bulk-Only
iInterface 1 HP
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 71
bInterfaceProtocol 17
iInterface 5 Novacom
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 1
Device Qualifier (for other device speed):
bLength 10
bDescriptorType 6
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
bNumConfigurations 1
Device Status: 0x0000
(Bus Powered)

I should also mention I am running on Ubuntu 12.10 64bit, and I installed this with a deb from here: http://www.yourproblemsolved.com/sites/default/files/ipad-charge-1.0_20101231-1_amd64.deb.zip

I'm assuming I'd have to edit ipad_charge.c and build from source?

@pmadhyastha
Copy link
Collaborator

True, you would have to modify "ipad_charge.c" too.

@affix
Copy link
Contributor

affix commented Mar 15, 2013

Keep in mind this was developed for iPad / iPhone / iPod Touch

So this might not charge your HP Touchpad. Please note that if you do make any changes and there is any damage to the device none of the contributing developers will accept responsibility for it.

@deerewright
Copy link
Author

"Keep in mind this was developed for iPad / iPhone / iPod Touch

So this might not charge your HP Touchpad. Please note that if you do make any changes and there is any damage to the device none of the contributing developers will accept responsibility for it."

Completely understood. I do know that the output of both the ipad charger and the HP charger is the same.

I'm not a complete noob, but I know just enough linux to be dangerous :)

"True, you would have to modify "ipad_charge.c" too."

what and how do I modify?

@affix
Copy link
Contributor

affix commented Mar 15, 2013

You would need to define the new vendor as VENDOR_HP

And the device as DEVICE_HP_TOUCHPAD

#define VENDOR_HP 0x0830
#define DEVICE_HP_TOUCHPAD 0x8072

Add a new IF statement to line 168

else if(desc.idVendor == VENDOR_HP && (desc.idProduct == DEVICE_HP_TOUCHPAD))
{
            if (set_charging_mode(dev, enable) < 0)
                        fprintf(stderr, "ipad_charge: error setting charge mode\n");
            else
                        count++;
}

Let me know if it works out for you

@deerewright
Copy link
Author

I edited my original post with more info, but I did install via .deb file. I assume, after the edits, I need to "make" and and "make install"? Should I uninstall my deb first?

@affix
Copy link
Contributor

affix commented Mar 15, 2013

Yes remove the deb package first. Once you make the edits you would need to rebuild from source.

@deerewright
Copy link
Author

No luck,

still same error

I added to line 168, after "}" and this is what it looks like:

"if (desc.idVendor == VENDOR_APPLE && (desc.idProduct == PRODUCT_IPAD1
|| desc.idProduct == PRODUCT_IPAD2
|| desc.idProduct == PRODUCT_IPAD2_3G
|| desc.idProduct == PRODUCT_IPAD2_4
|| desc.idProduct == PRODUCT_IPAD2_3GV
|| desc.idProduct == PRODUCT_IPAD3
|| desc.idProduct == PRODUCT_IPAD3_4G
|| desc.idProduct == PRODUCT_IPOD_TOUCH_2G
|| desc.idProduct == PRODUCT_IPHONE_3GS
|| desc.idProduct == PRODUCT_IPHONE_4_GSM
|| desc.idProduct == PRODUCT_IPOD_TOUCH_3G
|| desc.idProduct == PRODUCT_IPHONE_4_CDMA
|| desc.idProduct == PRODUCT_IPOD_TOUCH_4G
|| desc.idProduct == PRODUCT_IPHONE_4S
|| desc.idProduct == PRODUCT_IPHONE_5
|| desc.idProduct == PRODUCT_IPAD4)) {

            if (set_charging_mode(dev, enable) < 0)
                fprintf(stderr, "ipad_charge: error setting charge mode\n");
            else
                count++;
        }else if(desc.idVendor == VENDOR_APPLE && (desc.idProduct == DEVICE_HP_TOUCHPAD))

{
if (set_charging_mode(dev, enable) < 0)
fprintf(stderr, "ipad_charge: error setting charge mode\n");
else
count++;
}
}
}

Did I get it in the right place? Also I put the DEFINE statements just after all the others:

#define VERSION "1.1"

#define CTRL_OUT (LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_ENDPOINT_OUT)
#define VENDOR_APPLE 0x05ac
#define PRODUCT_IPAD1 0x129a
#define PRODUCT_IPAD2 0x129f
#define PRODUCT_IPAD2_3G 0x12a2
#define PRODUCT_IPAD2_4 0x12a9
#define PRODUCT_IPAD2_3GV 0x12a3
#define PRODUCT_IPAD3 0x12a4
#define PRODUCT_IPAD3_4G 0x12a6
#define PRODUCT_IPAD4 0x12ab

#define PRODUCT_IPOD_TOUCH_2G 0x1293
#define PRODUCT_IPHONE_3GS 0x1294
#define PRODUCT_IPHONE_4_GSM 0x1297
#define PRODUCT_IPOD_TOUCH_3G 0x1299
#define PRODUCT_IPHONE_4_CDMA 0x129c
#define PRODUCT_IPOD_TOUCH_4G 0x129e
#define PRODUCT_IPHONE_4S 0x12a0
#define PRODUCT_IPHONE_5 0x12a8

#define VENDOR_HP 0x0830
#define DEVICE_HP_TOUCHPAD 0x8072

Does the order matter?

@affix
Copy link
Contributor

affix commented Mar 15, 2013

yes you put it in the right place.

There could be a different charging mechanism in place for the HP Touchpad when connecting it to a PC or Laptop.

@deerewright
Copy link
Author

Well I tried starting all over using the directions in the wiki for package install "checkinstall", still no luck, I get three messages now:

ipad_charge: unable to claim interface: error -6
ipad_charge: error setting charge mode
ipad_charge: no such device or an error occured

Thanks for the help anyway. It was a good instructional, for me, at least.....

@deerewright
Copy link
Author

Must be....I just tried it on same laptop in windows with asus ai charger. Works with ipad not Touchpad

There could be a different charging mechanism in place for the HP Touchpad when connecting it to a PC or Laptop.

@wanderdeng
Copy link

Thank you!
I am so happy you will reply me.I try to add other devices ID(s) or set BUSNUM && DEVNUM, still no luck,result the same error: (in func “libusb_claim_interface”)

htc_charge: unable to claim interface: error -6
htc_charge: error setting charge mode
htc_charge: no such device or an error occured

Thanks for the help anyway. It was a good instructional, for me,so.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants