Reply 440 of 559, by rasteri
TgamesFR wrote on 2024-12-21, 03:45:Now the only remaining thing is the 16-bit report for fixing my mouse indeed =).
16bit mouse support has been merged. Seems to work on my two mice that use 16bit.
TgamesFR wrote on 2024-12-21, 03:45:Now the only remaining thing is the 16-bit report for fixing my mouse indeed =).
16bit mouse support has been merged. Seems to work on my two mice that use 16bit.
rasteri wrote on 2024-12-28, 21:38:Yeah as you say there's a 12MHz crystal. That's the only real change.
OK - Thanks a bunch.
It sounds important so I'll order new PCBs, but the HASL-free front and back plates in black are $16 extra fee per side. 🙁
I already have front/back plates but didn't order them in lead-free. I didn't think about touching them so I wish I spent the extra money back when I originally ordered them...
sofakng wrote on 2024-12-28, 23:59:I already have front/back plates but didn't order them in lead-free. I didn't think about touching them so I wish I spent the extra money back when I originally ordered them...
It's not a massive issue really, just don't go licking it.
Or if you're that worried, coat them in clearcoat
Makes sense. Thanks! 😀
sofakng wrote on 2024-12-29, 01:39:Makes sense. Thanks! 😀
Oh actually - the new plates have the LED and button in the same place, if you don't have this then get the new ones
Hey hey, I’ve been out sick for a few weeks - feeling better finally. I was able to get 11 boards finished up. Still need to program and test but getting closer to getting them up for sale for those who want to buy one pre-assembled.
I got the LEDs reoriented and everything looks great on each board. I have some extra parts even (since some of the components can only be bulked bought from LCSC).
Thanks for all the hard work on the firmware. You guys rock!
rasteri wrote on 2024-12-28, 23:45:16bit mouse support has been merged. Seems to work on my two mice that use 16bit.
Thanks for adding support for my 16bit mouse, indeed it works for me too (pointer, left, right, wheel and middle button).
Althought i've encountered 2 issues :
[1 ] Now HIDman power devices on my KVM only 1 times on 4.
Before it was always working, so i need switch ON/OFF the KVM multiple times until it get fully detected.
Here the full logs :
ESC main menuLogging HID Data. Press ESC to stop...I0 L8- 00 00 00 00 00 00 00 00reenumerating all portsport 0gdd len8mps 64addr ok 0gddfull ok 18Device Descriptor12 01 00 02 09 00 00 40 40 1A 01 01 11 01 00 0100 010x1A40 0x0101 0x0111Config Descriptor09 02 19 00 01 01 00 E0 32 09 04 00 00 01 09 0000 00 07 05 81 03 01 00 FFgcd ok 25Found hub4 port hubDoing new thing - 64new enum. failednew enum. 9checkn port 0ps- 0x101 pc- 0x01port 0 attachedfullspeedgdd.failenum.failcheckn port 1ps- 0x100 pc- 0x00checkn port 2ps- 0x101 pc- 0x01port 2 attachedfullspeedgdd.failenum.failcheckn port 3ps- 0x100 pc- 0x00port 1gdd.faildone reenumeratingreenumerating all portsport 0gdd len8mps 64addr ok 0gddfull ok 18Device Descriptor12 01 00 02 09 00 00 40 40 1A 01 01 11 01 00 0100 010x1A40 0x0101 0x0111Config Descriptor09 02 19 00 01 01 00 E0 32 09 04 00 00 01 09 0000 00 07 05 81 03 01 00 FF
gcd ok 25Found hub4 port hubDoing new thing - 64new enum. failednew enum. 9checkn port 0ps- 0x101 pc- 0x01port 0 attachedfullspeedgdd.failenum.failcheckn port 1ps- 0x100 pc- 0x00checkn port 2ps- 0x101 pc- 0x01port 2 attachedfullspeedgdd.failenum.failcheckn port 3ps- 0x100 pc- 0x00port 1gdd.faildone reenumeratingreenumerating all portsport 0gdd len8mps 64addr ok 0gddfull ok 18Device Descriptor12 01 00 02 09 00 00 40 40 1A 01 01 11 01 00 0100 010x1A40 0x0101 0x0111Config Descriptor09 02 19 00 01 01 00 E0 32 09 04 00 00 01 09 0000 00 07 05 81 03 01 00 FFgcd ok 25Found hub4 port hubDoing new thing - 64new enum. failednew enum. 9checkn port 0ps- 0x101 pc- 0x01port 0 attachedfullspeedgdd.failenum.failcheckn port 1ps- 0x100 pc- 0x00checkn port 2ps- 0x101 pc- 0x01port 2 attachedfullspeedgdd.failenum.failcheckn port 3ps- 0x100 pc- 0x00port 1gdd.faildone reenumeratingreenumerating all portsport 0gdd len8mps 64addr ok 0gddfull ok 18Device Descriptor12 01 00 02 09 00 00 40 40 1A 01 01 11 01 00 0100 010x1A40 0x0101 0x0111Config Descriptor09 02 19 00 01 01 00 E0 32 09 04 00 00 01 09 0000 00 07 05 81 03 01 00 FFgcd ok 25Found hub4 port hubDoing new thing - 64new enum. failednew enum. 9checkn port 0ps- 0x101 pc- 0x01port 0 attachedfullspeedgdd len8mps 64addr ok 0gddfull ok 18Device Descriptor12 01 00 02 00 00 00 40 6D 04 35 C3 02 06 01 0203 010x046D 0xC335 0x0602Config Descriptor09 02 3B 00 02 01 04 A0 FA 09 04 00 00 01 03 0101 00 09 21 11 01 00 01 22 41 00 07 05 81 03 0800 01 09 04 01 00 01 03 00 00 00 09 21 11 01 0001 22 77 00 07 05 82 03 40 00 01gcd ok 59enum.OKcheckn port 1ps- 0x100 pc- 0x00checkn port 2ps- 0x101 pc- 0x01port 2 attachedfullspeedgdd len8mps 64addr ok 0gddfull ok 18Device Descriptor12 01 00 02 00 00 00 40 6D 04 8B C0 03 27 01 0203 010x046D 0xC08B 0x2703Config Descriptor09 02 3B 00 02 01 04 A0 96 09 04 00 00 01 03 0102 00 09 21 11 01 00 01 22 43 00 07 05 81 03 0800 01 09 04 01 00 01 03 00 00 00 09 21 11 01 0001 22 97 00 07 05 82 03 14 00 01gcd ok 59enum.OKcheckn port 3ps- 0x100 pc- 0x00Interface 0InterfaceProtocol 1Interface 0 Report Descriptor -05 01 09 06 A1 01 05 07 19 E0 29 E7 15 00 25 0175 01 95 08 81 02 95 01 75 08 81 01 95 03 75 0105 08 19 01 29 03 91 02 95 05 75 01 91 01 95 0675 08 15 00 26 FF 00 05 07 19 00 2A FF 00 81 00C0set report mode - 1 - 1Report 0 usage 6 length 64startbit 56 it 4 ip 0 chan 0 cont 0 size 8 count 6startbit 48 it 4 ip 0 chan 0 cont 0 size 8 count 6startbit 40 it 4 ip 0 chan 0 cont 0 size 8 count 6startbit 32 it 4 ip 0 chan 0 cont 0 size 8 count 6startbit 24 it 4 ip 0 chan 0 cont 0 size 8 count 6startbit 16 it 4 ip 0 chan 0 cont 0 size 8 count 6startbit 8 it 4 ip 0 chan 0 cont 0 size 8 count 1startbit 0 it 5 ip 0 chan 0 cont e0 size 1 count 8SetReportInterface 1InterfaceProtocol 0Interface 1 Report Descriptor -05 01 09 06 A1 01 05 07 19 00 29 E7 15 00 26 E700 75 08 95 14 85 01 81 00 C0 05 0C 09 01 A1 0185 02 15 00 25 01 75 01 95 07 09 B5 09 B6 09 B709 CD 09 E9 09 EA 09 E2 81 02 95 01 81 01 C0 0643 FF 0A 02 06 A1 01 85 11 75 08 95 13 15 00 26FF 00 09 02 81 00 09 02 91 00 C0 06 43 FF 0A 0406 A1 01 85 12 75 08 95 3F 15 00 26 FF 00 09 0481 00 09 04 91 00 C0set report mode - 1 - 1Report 1 usage 6 length 168startbit 160 it 4 ip 0 chan 0 cont 0 size 8 count 14startbit 152 it 4 ip 0 chan 0 cont 0 size 8 count 14startbit 144 it 4 ip 0 chan 0 cont 0 size 8 count 14startbit 136 it 4 ip 0 chan 0 cont 0 size 8 count 14startbit 128 it 4 ip 0 chan 0 cont 0 size 8 count 14startbit 120 it 4 ip 0 chan 0 cont 0 size 8 count 14startbit 112 it 4 ip 0 chan 0 cont 0 size 8 count 14startbit 104 it 4 ip 0 chan 0 cont 0 size 8 count 14startbit 96 it 4 ip 0 chan 0 cont 0 size 8 count 14startbit 88 it 4 ip 0 chan 0 cont 0 size 8 count 14startbit 80 it 4 ip 0 chan 0 cont 0 size 8 count 14startbit 72 it 4 ip 0 chan 0 cont 0 size 8 count 14startbit 64 it 4 ip 0 chan 0 cont 0 size 8 count 14startbit 56 it 4 ip 0 chan 0 cont 0 size 8 count 14startbit 48 it 4 ip 0 chan 0 cont 0 size 8 count 14startbit 40 it 4 ip 0 chan 0 cont 0 size 8 count 14startbit 32 it 4 ip 0 chan 0 cont 0 size 8 count 14startbit 24 it 4 ip 0 chan 0 cont 0 size 8 count 14startbit 16 it 4 ip 0 chan 0 cont 0 size 8 count 14startbit 8 it 4 ip 0 chan 0 cont 0 size 8 count 14Interface 0InterfaceProtocol 2Interface 0 Report Descriptor -05 01 09 02 A1 01 09 01 A1 00 05 09 19 01 29 1015 00 25 01 95 10 75 01 81 02 05 01 16 01 80 26FF 7F 75 10 95 02 09 30 09 31 81 06 15 81 25 7F75 08 95 01 09 38 81 06 05 0C 0A 38 02 95 01 8106 C0 C0set report mode - 1 - 1Report 0 usage 2 length 64startbit 56 it 0 ip 1 chan 0 cont 0 size 8 count 1startbit 48 it 3 ip 1 chan 1 cont 6 size 8 count 1startbit 32 it 3 ip 1 chan 1 cont 5 size 10 count 2startbit 16 it 3 ip 1 chan 1 cont 4 size 10 count 2startbit 0 it 5 ip 0 chan 1 cont 1 size 1 count 10Interface 1InterfaceProtocol 0Interface 1 Report Descriptor -05 01 09 06 A1 01 85 01 05 07 19 E0 29 E7 15 0025 01 75 01 95 08 81 02 81 03 95 06 75 08 15 0026 A4 00 19 00 2A A4 00 81 00 C0 05 0C 09 01 A101 85 03 75 10 95 02 15 01 26 8C 02 19 01 2A 8C02 81 00 C0 05 01 09 80 A1 01 85 04 75 02 95 0115 01 25 03 09 82 09 81 09 83 81 60 75 06 81 03C0 06 00 FF 09 01 A1 01 85 10 75 08 95 06 15 0026 FF 00 09 01 81 00 09 01 91 00 C0 06 00 FF 0902 A1 01 85 11 75 08 95 13 15 00 26 FF 00 09 0281 00 09 02 91 00 C0set report mode - 1 - 1Report 1 usage 6 length 72startbit 64 it 4 ip 0 chan 0 cont 0 size 8 count 6startbit 56 it 4 ip 0 chan 0 cont 0 size 8 count 6startbit 48 it 4 ip 0 chan 0 cont 0 size 8 count 6startbit 40 it 4 ip 0 chan 0 cont 0 size 8 count 6startbit 32 it 4 ip 0 chan 0 cont 0 size 8 count 6startbit 24 it 4 ip 0 chan 0 cont 0 size 8 count 6startbit 8 it 5 ip 0 chan 0 cont e0 size 1 count 8port 1gdd.faildone reenumeratingI0 L8- 00 00 29 00 00 00 00 00HIDman v1.1.5a1. Key2. Mouse3. Game4. Adv.ESC to exit menuGoodbye
[2] My mouse buttons to adjust pointer speed (DPI) are not working, so i've noticed the pointer goes really faster than it should.
And if i manage to setup it from another PC it's always faster than the recorded setting in my mouse. No idea why however.
For bug[1] i've fixed it by restoring thoses files :
- test.c
- testdata.c
- testdata.h
from the commit "hub initialization tweaks" (11d30a0324d4f5232fff57a887ce7ee3c92e6364).
I don't know which test exactly broke the hub init on lastest commit but it's cleary there.
After restoring thoses files my problem with my KVM is gone.
For bug [2] i've noticed something interesting :
My buttons to adjust mouse sensibility works only on first initialisation of the hub (when i power ON the PC).
Then it broke on each reconnect of the KVM. HIDman led blinks but the pointer speed remains same.
About that speed is like 1.5x-2x more faster than the same DPI settings directly plugged in USB.
Everything else works always but i need sort of be sure of the sensibility i want before reswitch on the KVM otherwhise it stay stuck until next reboot.
EDIT:
For bug [2] nethermind, it not bug on my Windows 98 SE PC, i guess it's prob something only related to my modern PC (where i don't care it was just for testing).
It's probably related to how modern hardware still support PS2 Mouse.
As long i don't have the bug on old PC it's good, i can switch ON/OFF there no problem it always catch thoses buttons !
So to resume, no problem so far now i gonna now full enjoy HIDman ! 😁
TgamesFR wrote on 2024-12-29, 07:23:For bug[1] i've fixed it by restoring thoses files : […]
For bug[1] i've fixed it by restoring thoses files :
- test.c
- testdata.c
- testdata.h
Those three files aren't used in a normal hidman build. My guess is something went wrong with your build the first time, unrelated to those files.
Are you doing a "make clean" before every "make"?
Andy
rasteri wrote on 2024-12-29, 13:42:Those three files aren't used in a normal hidman build. My guess is something went wrong with your build the first time, unrelated to those files.
Are you doing a "make clean" before every "make"?
Andy
Yes i did, i even deleted the whole folder and redid a "git clone https://github.com/rasteri/HIDman.git".
And each time i do "make" in firmware folder thoses files get used. No idea why.
But it's fine when you will push a compiled version it won't be a issue so for me 😉.
Right now i've tested the 1.1.5a version with my setup the whole day, absolute no issue with my KVM, keyboard and mouse !
The only small minor thing is about the mouse going faster than the real DPI set but i can lower the DPI to have something ok.
This doesn't work on my kvm 🙁
This is the KVM I have: https://www.amazon.com/gp/product/B08QCR62VL
HIDman doesn't seem to enumerate devices on the hub. But it works fine when I connect a keyboard directly.
By the way, should HIDman be getting power from USB or from PS2? Maybe there is some differential between the +5V on my hub and the +5V coming from PS2. Maybe I should sever the PS2 power?
My current setup is a Raspberry Pi connected to my hub/KVM, a custom script running to get keyboard input from the Linux device, piping that to a Python script and issuing PS2 commands through an Arduino device. It works, but it can lag behind if I type too fast. I could never get a serial mouse to properly work (in fact I started a whole thread about it: Re: Serial mouse in Windows 2000 ) so I am currently just using a PS2 mouse for my retro PCs and a USB mouse for my newer PCs.
Since I have had trouble emulating a PS2 or serial mouse, maybe the HIDman can still help me out. If I could connect it as a client to my raspberry pi then maybe I can still use it to issue PS2 commands.
I'm using v1.1.4
dylanrush wrote on 2025-01-06, 22:18:This doesn't work on my kvm 🙁
By the way, should HIDman be getting power from USB or from PS2? Maybe there is some differential between the +5V on my hub and the +5V coming from PS2. Maybe I should sever the PS2 power?
hidman gets power from PS/2. It should not be getting power from USB (apart from during firmware upgrades).
A large unpowered KVM might not be a very good fit for this application. Drawing that much power from the PS/2 port may be problematic.
Nonetheless, try this beta version, it's got the new KVM init code.
If that doesn't work get me a HID log (start it logging, then plug in your KVM and try switching the output a few times)
(This version of the code might be laggy but the full version will fix that)
One of my ten pre-assembled units flashes as usual with proper USB ID and everything, but only pulses the green LED very briefly when supplied with power. Never changes to blue, never presents as a keyboard as indicated by a BIOS error message. Can't spot any soldering imperfections - partially defective controller maybe?
(The one unit that once absolutely did not like being connected to a gameport has now recovered, gonna keep that one)
sudo ./python3 ch55xtool -f hidman_axp_v1.1.4.binFound CH559 with SubId:17BTVER:02.40UID:67-CA-79-BC-00-00-00-00Erasing chip flash. Done.Flashing chip. Done.Finalize communication. Done.
Bzzz wrote on 2025-01-08, 00:23:One of my ten pre-assembled units flashes as usual with proper USB ID and everything, but only pulses the green LED very briefly when supplied with power. Never changes to blue, never presents as a keyboard as indicated by a BIOS error message. Can't spot any soldering imperfections - partially defective controller maybe?
Sounds like it's always going into the bootloader, check for shorts around the crystal and the two capacitors beside the crystal
Can't really see anything there, also no obvious shorts on the micro. Probably best to check if the crystal is actually running.
Bzzz wrote on 2025-01-08, 09:37:Can't really see anything there, also no obvious shorts on the micro. Probably best to check if the crystal is actually running.
Attached is a pic showing the trace that enables the bootloader
Check across C5 with a multimeter, see if it's shorted.
If so the short may be the capacitor itself, or underneath the crystal or something
Unfortunately v1.1.5b didn't work with my KVM either. I don't think it's too much power draw because I was able to plug both my KVM and a Logitech wireless keyboard/mouse into the USB ports and the Logitech one worked. I used the Logitech one to dump the HID data while I cycled the KVM. Data below
If you have some code change suggestions, I am not familiar with your code base but I'm handy enough to take a change, compile it myself and start to understand it.
I am going to start hunting for a new KVM if anyone has some suggestions for one that is known to work with this device.
Logging HID Data. Press ESC to stop...I0 L8- 00 00 00 00 00 00 00 00reenumerating all portsport 0gdd.failport 1sp 53gdd len8mps 8addr ok 0gddfull ok 18Device Descriptor12 01 00 02 00 00 00 08 6D 04 2B C5 01 12 01 0200 010x046D 0xC52B 0x1201Config Descriptor09 02 54 00 03 01 04 A0 31 09 04 00 00 01 03 0101 00 09 21 11 01 00 01 22 3B 00 07 05 81 03 0800 08 09 04 01 00 01 03 01 02 00 09 21 11 01 0001 22 94 00 07 05 82 03 08 00 02 09 04 02 00 0103 00 00 00 09 21 11 01 00 01 22 62 00 07 05 8303 20 00 02gcd ok 84Interface 0InterfaceProtocol 1Interface 0 Report Descriptor -05 01 09 06 A1 01 05 07 19 E0 29 E7 15 00 25 0175 01 95 08 81 02 81 03 95 05 05 08 19 01 29 0591 02 95 01 75 03 91 01 95 06 75 08 15 00 26 A400 05 07 19 00 2A A4 00 81 00 C0set boot mode - 1 - 0SetReportInterface 1InterfaceProtocol 2Interface 1 Report Descriptor -05 01 09 02 A1 01 85 02 09 01 A1 00 05 09 19 0129 10 15 00 25 01 95 10 75 01 81 02 05 01 16 01F8 26 FF 07 75 0C 95 02 09 30 09 31 81 06 15 8125 7F 75 08 95 01 09 38 81 06 05 0C 0A 38 02 9501 81 06 C0 C0 05 0C 09 01 A1 01 85 03 75 10 9502 15 01 26 8C 02 19 01 2A 8C 02 81 00 C0 05 0109 80 A1 01 85 04 75 02 95 01 15 01 25 03 09 8209 81 09 83 81 60 75 06 81 03 C0 06 BC FF 09 88A1 01 85 08 19 01 29 FF 15 01 26 FF 00 75 08 9501 81 00 C0set boot mode - 0 - 0Interface 2InterfaceProtocol 0
Interface 2 Report Descriptor -06 00 FF 09 01 A1 01 85 10 75 08 95 06 15 00 26FF 00 09 01 81 00 09 01 91 00 C0 06 00 FF 09 02A1 01 85 11 75 08 95 13 15 00 26 FF 00 09 02 8100 09 02 91 00 C0 06 00 FF 09 04 A1 01 85 20 7508 95 0E 15 00 26 FF 00 09 41 81 00 09 41 91 0085 21 95 1F 15 00 26 FF 00 09 42 81 00 09 42 9100 C0set report mode - 0 - 0done reenumeratingI0 L8- 00 00 00 00 00 00 00 29
dylanrush wrote on 2025-01-08, 22:43:Unfortunately v1.1.5b didn't work with my KVM either.
So I've added an option in 1.1.5c to forcibly re-redetect devices, just in case your KVM is taking longer to initialize than other hubs. You access this from the HID log.
Get everything set up, and select HIDman's port on your KVM. Then go into hidman's menu, start a HID log, and press "R" to redetect. See if this makes your hub appear. Maybe try it 2 or 3 times.
(Obviously asking you to do this every time you switch KVM isn't realistic but it'll provide useful debug info)
rasteri wrote on 2025-01-09, 22:38:So I've added an option in 1.1.5c to forcibly re-redetect devices, just in case your KVM is taking longer to initialize than oth […]
dylanrush wrote on 2025-01-08, 22:43:Unfortunately v1.1.5b didn't work with my KVM either.
So I've added an option in 1.1.5c to forcibly re-redetect devices, just in case your KVM is taking longer to initialize than other hubs. You access this from the HID log.
Get everything set up, and select HIDman's port on your KVM. Then go into hidman's menu, start a HID log, and press "R" to redetect. See if this makes your hub appear. Maybe try it 2 or 3 times.
(Obviously asking you to do this every time you switch KVM isn't realistic but it'll provide useful debug info)
I ended up getting a new KVM which was at least recognized by HIDMan. It would indeed register a few keystrokes. But it spammed the enter key and wasn't really working.
I also got a OmniView F1D104 PS2 kvm to go between my USB KVM and my retro machines. This unfortunately does not supply power over PS2! So my HIDMan was not working with my OmniView.
However the OmniView did support my serial mouse with my raspberry pi solution. So now everything is working for me with my raspberry pi.
I would like to get the HIDMan working with this setup. Maybe it's as simple as providing external power instead of power over PS2? At any rate my project is working end to end, just with occasional hiccups with the keyboard, so that may be a project for another day.
dylanrush wrote on 2025-01-17, 19:38:I ended up getting a new KVM which was at least recognized by HIDMan. It would indeed register a few keystrokes. But it spammed the enter key and wasn't really working.
Try going back to 1.1.4, maybe there's a bug in 1.1.5c.
I would like to get the HIDMan working with this setup. Maybe it's as simple as providing external power instead of power over PS2? At any rate my project is working end to end, just with occasional hiccups with the keyboard, so that may be a project for another day.
Try powering it through the USB ports on the front of hidman. You can use the same USB A-to-A cable you use to upgrade firmware (except plug it into a USB power supply instead of your computer)