Skip to content
This repository was archived by the owner on Feb 24, 2021. It is now read-only.

Fix USB device descriptor issue, set serial number to "iceman1001".#243

Merged
iceman1001 merged 2 commits intoiceman1001:masterfrom
micolous:usb-descriptor-funtime
Sep 6, 2018
Merged

Fix USB device descriptor issue, set serial number to "iceman1001".#243
iceman1001 merged 2 commits intoiceman1001:masterfrom
micolous:usb-descriptor-funtime

Conversation

@micolous
Copy link
Copy Markdown

@micolous micolous commented Sep 2, 2018

This is a port of upstream PR 565, which addresses USB enumeration issues on some Android devices, described in Proxmark#565 (comment). Still don't know why this is a problem, but this patch seems to fix things.

I also took the liberty of changing the serial number of the device to iceman1001, which should make it pretty obvious in dmesg and similar tools when someone is running this firmware:

[42548.700691] usb 3-13.2.2: new full-speed USB device number 28 using xhci_hcd
[42554.165609] usb 3-13.2.2: New USB device found, idVendor=9ac4, idProduct=4b8f, bcdDevice= 1.00
[42554.165614] usb 3-13.2.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[42554.165617] usb 3-13.2.2: Product: proxmark3
[42554.165620] usb 3-13.2.2: Manufacturer: proxmark.org
[42554.165623] usb 3-13.2.2: SerialNumber: iceman1001
[42554.173866] cdc_acm 3-13.2.2:1.0: ttyACM0: USB ACM device

This is a port of upstream PR 565, which addresses USB enumeration issues on
some Android devices, described in
Proxmark#565 (comment).
@iceman1001
Copy link
Copy Markdown
Owner

Strange that the iProduct string has anything to do with the identification, I only thought it was the iManufacturer string which was matched.
Dunno why you change serialnumber, I thought it had to be a numberstring (not with letters inside)

@micolous
Copy link
Copy Markdown
Author

micolous commented Sep 2, 2018

iManufacturer is the only thing that is used for the udev rules (on Linux). I use the USB device ID for Android stuff, because some versions of Android don't have the strings easily available :(

iProduct is not used by anything, and I don't match it by anything. However, there are strange enumeration issues with some Android devices (per the upstream PR). This cleans that up.

iSerialNumber was more a "while I'm here..." thing. It doesn't get set by the upstream PM3 firmware. I don't see any strict requirements on what it is (ie: must be a number), other than it being "manufacturer determined". Happy to drop that if it bothers you greatly, as it's not critical. It's just a little more meaningful than "888".

@iceman1001
Copy link
Copy Markdown
Owner

Drop the "1001" part of the iSerialNumber and I'll be happy to merge.

@iceman1001
Copy link
Copy Markdown
Owner

TeamWalrus was doing something similar, luckily you changed the iSeralnumber :)
TeamWalrus@1be25f9

@micolous
Copy link
Copy Markdown
Author

micolous commented Sep 6, 2018

Done. I also note @cjbrigato's comments in RfidResearchGroup/proxmark3@ff16cbb#commitcomment-30407117

That is, the device path will change between the bootrom and flasher on OSX, and one will need to flash the bootrom before the flasher.

@iceman1001
Copy link
Copy Markdown
Owner

I will revert back to the 888 ish after this one, but making sure it is not a % 8 tuple

@iceman1001 iceman1001 merged commit 6d84bec into iceman1001:master Sep 6, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants