#⌨️ 🎮🕹️🖱️USB Host HID test devices
1 messages · Page 2 of 1
Checking 8bitdo buttons are detected correctly (not tried installing their software and messing yet, this is default)
and the button mapping is incorrect
you have uint8_t buttons2 = data[4]; which I don't have.
this puts the remaining bytes off by one
IE
- uint8_t lt = data[5];
+ uint8_t lt = data[4];
- uint8_t rt = data[6];
+ uint8_t rt = data[5];
and so on
Also found https://www.partsnotincluded.com/understanding-the-xbox-360-wired-controllers-usb-data/
"I’m using a genuine Microsoft Xbox 360 wired controller" which also lacks buttons2
(scroll down to the colored diagrams)
so not sure what's going on.
For me and partsnotincluded, the byte 2 contains both dpad and buttons2 data (whereas you are only getting dpad data from it)
What is buttons2 data?
in xbox360_driver.h
if (buttons2 != last_buttons2_) {
if ((buttons2 & 0x10) && !(last_buttons2_ & 0x10))
ESP_LOGI("usb_hidx.xbox360", "Button Start pressed");
if ((buttons2 & 0x20) && !(last_buttons2_ & 0x20))
ESP_LOGI("usb_hidx.xbox360", "Button Back pressed");
if ((buttons2 & 0x40) && !(last_buttons2_ & 0x40))
ESP_LOGI("usb_hidx.xbox360", "Button L-Stick pressed");
if ((buttons2 & 0x80) && !(last_buttons2_ & 0x80))
ESP_LOGI("usb_hidx.xbox360", "Button R-Stick pressed");
last_buttons2_ = buttons2;
}
the left half of byte 2 in partsnotincluded diagram
So the top row keys don't work for you?
if you mean the top row in the diagram, the D pad buttons work for me. R3 L3 ◀ ▶ do not
plus lt, rt, lx, ly, rx, ry are wrong
I wonder if it got messed up when I was configuring the drumset
So I managed to activate D-input mode plugging in the dongle to PC, setting the switch to 2.4G, then powering it on pressing Home+B
Not able to get D-input mode when plugging in directly (no dongle) tho.
same VID but PID is 0x6012 in D-input
Dongle with no controller connected is 0x6013
And X-input is 0x310B (same as plugging in directly)
If you set esphome to generic gamepad does it see it?
I'll give it a test
even with
usb_hidx:
hub: true
id: usb_hidx_component
gamepad:
device_id: gamepad_main
type: xbox360
it's spamming USB logs. And doesn't stop like it did in X-input
A is permanently pressed and B isn't detected tho
button sensors also don't work when type: generic
Here's some logs if you want 'em
Pressing and holding Home + Y from powered-off puts it in Nintendo Switch mode
Dongle connected to ESPHome
[I][usb_hidx:323]: USB device disconnected
[I][usb_hidx:343]: Device removed, 0 devices remaining
[D][usb_host:026]: Event flags 2X
[I][usb_hidx:096]: New USB device detected at address 6
[I][usb_hidx:131]: Device VID:PID = 057E:2009, Class=0x00
[I][usb_hidx:154]: Config: wTotalLength=41, bNumInterfaces=1
[I][usb_hidx:192]: Found HID interface, protocol 0, class 0x03
[I][usb_hidx:221]: Found interrupt IN endpoint: 0x84
[I][usb_hidx:224]: Found interrupt OUT endpoint: 0x05
[I][usb_hidx:269]: Attempting to match device (protocol=0, VID=057E, PID=2009) to 12 drivers
[D][usb_hidx:272]: Checking driver: Xbox360
[D][usb_hidx:272]: Checking driver: XboxOne
[D][usb_hidx:272]: Checking driver: PS4
[D][usb_hidx:272]: Checking driver: Steam
[D][usb_hidx:272]: Checking driver: Stadia
[D][usb_hidx:272]: Checking driver: Switch
[I][usb_hidx:275]: Matched device to Switch driver
[W][usb_hidx.switch:024]: Official Switch Pro controller detected
[W][usb_hidx.switch:025]: NOTE: Not supported on ESP32-S3 due to USB Host stack limitations
[W][usb_hidx.switch:026]: Use ESP32-P4 or third-party Switch controllers instead
[I][usb_hidx:312]: Device monitoring started (protocol 0)
nothing when I mash buttons
I have a P4
You are running it on the P4?
no. ESP32-S3
What does it do in playstation mode?
is that D-input mode?
Booting with holding down A & X seem to be the standard X-input mode
I thought PSC was playstation
Those combos don't work for me
what version of the firmware did it update to ?
I haven't yet
Let me know
Spent a while trying to get their app working on Wine based on posts linked in Reddit AI you linked.
Will try again when I have some more time.
It launches, but doesn't detect the controller regardless of mode I put it in, udev rules applied, registary setting, Wine Bottles via FlatPak, add permissions to the flatpak, Wine Bottles via NixPkgs.
Doesn't even start with plain Wine via NixPkgs, but I could try installing the dependencies it needs.
But next gonna try installing Steam to see what config options that has
tell gemini to troubleshoot you through figuring out why your wine / udev rules aren't working
So I installed Steam & logged in 🚂
Steam input shows it plugged in X-Input mode as a generic controller
Steam→Settings…→Controller→Test layout
but the specific 8bitdo layout when connected in D-input mode over the dongle,
and shows the gyro too on another page 🙂🙃 🎉
Also added 8BitDo software via Games -> Add a Non-Steam Game to My Library…
Didn't launch
Then Manage -> Properties… -> Compatibility -> ✅ Force the use of a specific Steam Play compatibility tool Proton 10.0-4 (the biggest version)
And it launched and detected my controller when I plugged it in directly 🎉
Gamepad Present FW V1.06 (undated) V1.09 (2026-01-20) available
Dongle present FW V1.04 (2025-06-06) V1.06 (2025-09-22) available
RGB control works ❤️ 💚 💙
12 LEDs per joystick ring
No openRGB support so could try reverse engineering that
Does your P4 have a display?
were you just switching the mode in the steam software? Never found out if there was a button combo for that fw version?
It's kind of strange I had all these hid devices working perfectly fine and now have basically had to get them all working from scratch again.
No
which dev board do you have?
I attempted to get IMU data with little success you have to enable it but I'm not sure if it sends it over USB
it shows the byte values for it but they are all zeros over usb
Never found a way to get it into any modes other than X-input or firmware flashing mode plugged in directly
all this time I thought it was a speaker...
The Switch Pro Controller can produce audible, musical sounds similar to the Joy-Cons, though neither has actual speakers. Both controllers use precise "HD Rumble" motors to create vibrations that resonate as audible notes, most notably in games like Super Mario Bros. Wonder.
It's kinda a speaker I guess
Same unit I have when you have a moment would love for you to test voice assistant on it for me 😄
Sure. I've got a microphone and speaker I can hook up to it but no time immediately
there is a weird glitch where it gets feedback on the mic when you have wifi enabled that is all comes across in the recording
USB MCE IR Receiver + Remote 🙁
[16:28:04.829][W][component:505]: usb_host took a long time for an operation (310 ms), max is 30 ms
[16:28:04.832]E (18755965) USBH: Dev 0 EP 0 Error
[16:28:04.840][D][esp-idf:000]: E (18755965) ENUM: Bad transfer status 1: CHECK_SHORT_DEV_DESC
[16:28:04.846][D][esp-idf:000]: E (18755965) ENUM: [0:0] CHECK_SHORT_DEV_DESC FAILED
Do you have config yaml & instructions on how I can get a recording?
Maybe as a thread in voice-assistant to keep things organised?
You just turn the debug pipe feature on in HA
assist_pipeline:
debug_recording_dir: /share/assist_pipeline
this dumps all your voice commands to whatever folder you want
The interference sounds like this
If you turn off wifi and use ethernet the stream is clear as bell.
What about the ESPHome YAML?
Will get back to you with this.
Woah it works! Almost tossed in the towel on that one...
[18:35:39.379][I][usb_hidx:116]: New USB device detected at address 1
[18:35:39.461][I][usb_hidx:154]: Device VID:PID = 1784:0006, Class=0x00
[18:35:39.467][I][usb_hidx:190]: Config: wTotalLength=32, bNumInterfaces=1
[18:35:39.472][I][usb_hidx:229]: Found HID interface, protocol 255, class 0xFF
[18:35:39.480][W][usb_hidx:272]: Fixing invalid bInterval=0 on OUT endpoint 0x01
[18:35:39.486][I][usb_hidx:276]: Found interrupt OUT endpoint: 0x01
[18:35:39.492][W][usb_hidx:265]: Fixing invalid bInterval=0 on IN endpoint 0x81
[18:35:39.500][I][usb_hidx:269]: Found interrupt IN endpoint: 0x81 (interval=1)
[18:35:39.508][I][usb_hidx:321]: Attempting to match device (protocol=255, VID=1784, PID=0006) to 15 drivers
[18:35:39.514][D][usb_hidx:324]: Checking driver: Keyboard
[18:35:39.517][D][usb_hidx:324]: Checking driver: Mouse
[18:35:39.522][D][usb_hidx:324]: Checking driver: Xbox360
[18:35:39.528][D][usb_hidx:324]: Checking driver: XboxOne
[18:35:39.530][D][usb_hidx:324]: Checking driver: PS4
[18:35:39.536][D][usb_hidx:324]: Checking driver: Steam
[18:35:39.542][D][usb_hidx:324]: Checking driver: Stadia
[18:35:39.544][D][usb_hE (4446) USBH: Dev 1 EP 0 STALL
[18:35:39.547]idx:324]: Checking driver: Switch
[18:35:39.553][D][usb_hidx:324]: Checking driver: Interact
[18:35:39.558][D][usb_hidx:324]: Checking driver: MCERemote
[18:35:39.564][I][usb_hidx:327]: Matched device to MCERemote driver
[18:35:39.569][I][usb_hidx.mce:054]: MCE IR Receiver detected, sending gen2 init
[18:35:39.578][I][usb_hidx:372]: Device monitoring started (protocol 255)
[18:35:39.585][W][component:505]: usb_hidx took a long time for an operation (211 ms), max is 30 ms
[18:35:39.627][W][usb_hidx:615]: LED command failed: 4
Sending IR command from green button remote:
[18:35:50.000][D][usb_hidx:521]: RAW: [81 B8]
[18:35:50.006][D][usb_hidx.mce:065]: MCE[2]: 81 B8 00 00 00 00 00 00
[18:35:50.008][D][usb_hidx:521]: RAW: [81 0F]
[18:35:50.014][D][usb_hidx.mce:065]: MCE[2]: 81 0F 00 00 00 00 00 00
[18:35:50.019][D][usb_hidx:521]: RAW: [8A 8B 07 8A 07 8B 10 8A 11 9C 10]
[18:35:50.028][D][usb_hidx.mce:065]: MCE[11]: 8A 8B 07 8A 07 8B 10 8A
[18:35:50.036][D][usb_hidx:521]: RAW: [92 8A 08 8A 07 8B 07 8A 08 8A 07 8B 07 8A 08 8A 07 8A 08]
[18:35:50.042][D][usb_hidx.mce:065]: MCE[19]: 92 8A 08 8A 07 8B 07 8A
[18:35:50.047][D][usb_hidx:521]: RAW: [90 8A 08 93 07 8A 08 8A 08 8A 08 89 11 8A 08 8A 07]
[18:35:50.053][D][usb_hidx.mce:065]: MCE[17]: 90 8A 08 93 07 8A 08 8A
[18:35:50.061][D][usb_hidx:521]: RAW: [8F 8A 08 93 11 89 08 8A 08 8A 08 89 08 8A 08 93]
[18:35:50.067][D][usb_hidx.mce:065]: MCE[16]: 8F 8A 08 93 11 89 08 8A
[18:35:50.072][D][usb_hidx:521]: RAW: [86 08 89 11 8A 08 8A]
[18:35:50.078][D][usb_hidx.mce:065]: MCE[7]: 86 08 89 11 8A 08 8A 00
[18:35:50.083][D][usb_hidx:521]: RAW: [82 7F 7F]
[18:35:50.089][D][usb_hidx.mce:065]: MCE[3]: 82 7F 7F 00 00 00 00 00
[18:35:50.092][D][usb_hidx:521]: RAW: [81 7F]
[18:35:50.097][D][usb_hidx.mce:065]: MCE[2]: 81 7F 00 00 00 00 00 00
[18:35:50.100][D][usb_hidx:521]: RAW: [82 7F 7F]
[18:35:50.105][D][usb_hidx.mce:065]: MCE[3]: 82 7F 7F 00 00 00 00 00
[18:35:50.111][D][usb_hidx:521]: RAW: [81 7F]
[18:35:50.117][D][usb_hidx.mce:065]: MCE[2]: 81 7F 00 00 00 00 00 00
[18:35:50.119][D][usb_hidx:521]: RAW: [82 7F 7F]
[18:35:50.125][D][usb_hidx.mce:065]: MCE[3]: 82 7F 7F 00 00 00 00 00
[18:35:50.130][D][usb_hidx:521]: RAW: [81 7F]
[18:35:50.136][D][usb_hidx.mce:065]: MCE[2]: 81 7F 00 00 00 00 00 00
[18:35:50.139][D][usb_hidx:521]: RAW: [82 7F 7F]
[18:35:50.144][D][usb_hidx.mce:065]: MCE[3]: 82 7F 7F 00 00 00 00 00
[18:35:50.150][D][usb_hidx:521]: RAW: [82 7F 7F]
[18:35:50.155][D][usb_hidx.mce:065]: MCE[3]: 82 7F 7F 00 00 00 00 00
[18:35:50.158][D][usb_hidx:521]: RAW: [81 7F]
[18:35:50.164][D][usb_hidx.mce:065]: MCE[2]: 81 7F 00 00 00 00 00 00
[18:35:50.169][D][usb_hidx:521]: RAW: [82 7F 5F 80]
[18:35:50.175][D][usb_hidx.mce:065]: MCE[4]: 82 7F 5F 80 00 00 00 00
[18:35:50.181][I][usb_hidx.mce:197]: RC6 key: 7 (addr=0x40 cmd=0x07)
(USB IR Receiver)
had some weird start up method to get the interface recognised 😐
Da na na!
Let me know how it explodes git should be updated now for the xbox360 for your 8bitdo
It should auto swap if you unplug the remote then plug in a keyboard or mouse etc
or switch controller mode
Failed getting the PS3 sixaxis remote working again
The generic remote I have is mega old logitech dual action and just endlessly spams no idea what it is doing.
Give adding devices a break for now and see if I can use the component for the gameboy emulator
Or try to detect a usb sound card which maybe more in your realm with your rad device
💣 Like this 💥
with
usb_hidx:
hub: true
id: usb_hidx_component
gamepad:
device_id: gamepad_main
type: generic
is
binary_sensor:
- platform: usb_hidx
id: gamepad_a_button
name: "Gamepad A"
usb_hidx_id: usb_hidx_component
type: gamepad
button_a: true
- platform: usb_hidx
id: gamepad_b_button
name: "Gamepad B"
usb_hidx_id: usb_hidx_component
type: gamepad
button_b: true
still how it's done?
Edit: fix tru typo
I should learn by now to test git after upload one moment
external_components:
source: github://NonaSuomy/esphome@hidx-testing-002
components:
- usb_hidx
refresh: always
usb_host:
enable_hubs: true
usb_hidx:
hub: true
id: usb_hidx_component
gamepad:
device_id: gamepad_main
type: xbox360
binary_sensor:
- platform: usb_hidx
id: gamepad_a_button
name: "Gamepad A"
usb_hidx_id: usb_hidx_component
type: gamepad
button_a: true
on_press:
- lambda: 'id(usb_hidx_component).send_xbox360_rumble(255, 0);'
on_release:
- lambda: 'id(usb_hidx_component).send_xbox360_rumble(0, 0);'
- platform: usb_hidx
id: gamepad_b_button
name: "Gamepad B"
usb_hidx_id: usb_hidx_component
type: gamepad
button_b: true
on_press:
- lambda: 'id(usb_hidx_component).send_xbox360_rumble(0, 255);'
on_release:
- lambda: 'id(usb_hidx_component).send_xbox360_rumble(0, 0);'
button:
- platform: template
name: "Rumble"
on_press:
lambda: 'id(usb_hidx_component).send_xbox360_rumble(0, 255);'
I see a missing e there in true
copy-paste error. original is fine (sorry!)
Confirmed validation catches that typo
so it works or it still explodes?
I think you said the other buttons were not working they should all register now
Was doing something else. Retrying now
binary_sensor:
- platform: usb_hidx
type: gamepad
name: "GP A"
id: gp_btn_a
internal: true
button_a: true
on_press:
- lvgl.label.update: {id: gp_a, text_color: 0x00FF00}
on_release:
- lvgl.label.update: {id: gp_a, text_color: 0x444444}
- platform: usb_hidx
type: gamepad
name: "GP B"
id: gp_btn_b
internal: true
button_b: true
on_press:
- lvgl.label.update: {id: gp_b, text_color: 0xFF2200}
on_release:
- lvgl.label.update: {id: gp_b, text_color: 0x444444}
- platform: usb_hidx
type: gamepad
name: "GP X"
id: gp_btn_x
internal: true
button_x: true
on_press:
- lvgl.label.update: {id: gp_y, text_color: 0x0088FF}
on_release:
- lvgl.label.update: {id: gp_y, text_color: 0x444444}
- platform: usb_hidx
type: gamepad
name: "GP Y"
id: gp_btn_y
internal: true
button_y: true
on_press:
- lvgl.label.update: {id: gp_x, text_color: 0xFFFF00}
on_release:
- lvgl.label.update: {id: gp_x, text_color: 0x444444}
- platform: usb_hidx
type: gamepad
name: "GP LB"
id: gp_btn_l
internal: true
button_l: true
on_press:
- lvgl.label.update: {id: gp_l, text_color: 0x00D4FF}
- lambda: lv_obj_set_style_bg_color(id(gp_lb_fill), lv_color_hex(0x00D4FF), LV_PART_MAIN);
on_release:
- lvgl.label.update: {id: gp_l, text_color: 0x444444}
- lambda: lv_obj_set_style_bg_color(id(gp_lb_fill), lv_color_hex(0x222222), LV_PART_MAIN);
- platform: usb_hidx
type: gamepad
name: "GP RB"
id: gp_btn_r
internal: true
button_r: true
on_press:
- lvgl.label.update: {id: gp_r, text_color: 0x00D4FF}
- lambda: lv_obj_set_style_bg_color(id(gp_rb_fill), lv_color_hex(0x00D4FF), LV_PART_MAIN);
on_release:
- lvgl.label.update: {id: gp_r, text_color: 0x444444}
- lambda: lv_obj_set_style_bg_color(id(gp_rb_fill), lv_color_hex(0x222222), LV_PART_MAIN);
- platform: usb_hidx
type: gamepad
name: "GP LT"
id: gp_btn_zl
internal: true
button_zl: true
on_press:
- lvgl.label.update: {id: gp_zl, text_color: 0x00D4FF}
- lambda: lv_bar_set_value(id(gp_lt_bar), 100, LV_ANIM_OFF);
on_release:
- lvgl.label.update: {id: gp_zl, text_color: 0x444444}
- lambda: lv_bar_set_value(id(gp_lt_bar), 0, LV_ANIM_OFF);
- platform: usb_hidx
type: gamepad
name: "GP RT"
id: gp_btn_zr
internal: true
button_zr: true
on_press:
- lvgl.label.update: {id: gp_zr, text_color: 0x00D4FF}
- lambda: lv_bar_set_value(id(gp_rt_bar), 100, LV_ANIM_OFF);
on_release:
- lvgl.label.update: {id: gp_zr, text_color: 0x444444}
- lambda: lv_bar_set_value(id(gp_rt_bar), 0, LV_ANIM_OFF);
- platform: usb_hidx
type: gamepad
name: "GP Minus"
id: gp_btn_minus
internal: true
button_minus: true
on_press:
- lvgl.label.update: {id: gp_minus, text_color: 0x00D4FF}
on_release:
- lvgl.label.update: {id: gp_minus, text_color: 0x444444}
- platform: usb_hidx
type: gamepad
name: "GP Plus"
id: gp_btn_plus
internal: true
button_plus: true
on_press:
- lvgl.label.update: {id: gp_plus, text_color: 0x00D4FF}
on_release:
- lvgl.label.update: {id: gp_plus, text_color: 0x444444}
- platform: usb_hidx
type: gamepad
name: "GP Home"
id: gp_btn_home
internal: true
button_home: true
on_press:
- lvgl.label.update: {id: gp_home, text_color: 0x00D4FF}
on_release:
- lvgl.label.update: {id: gp_home, text_color: 0x444444}
- platform: usb_hidx
type: gamepad
name: "GP L3"
id: gp_btn_l3
internal: true
button_l3: true
on_press:
- lvgl.label.update: {id: gp_l3, text_color: 0x00D4FF}
on_release:
- lvgl.label.update: {id: gp_l3, text_color: 0x444444}
- platform: usb_hidx
type: gamepad
name: "GP R3"
id: gp_btn_r3
internal: true
button_r3: true
on_press:
- lvgl.label.update: {id: gp_r3, text_color: 0x00D4FF}
on_release:
- lvgl.label.update: {id: gp_r3, text_color: 0x444444}
- platform: usb_hidx
type: gamepad
name: "GP D-Up"
id: gp_dpad_up
internal: true
dpad_up: true
on_press:
- lvgl.label.update: {id: gp_dup, text_color: 0x00D4FF}
on_release:
- lvgl.label.update: {id: gp_dup, text_color: 0x444444}
- platform: usb_hidx
type: gamepad
name: "GP D-Down"
id: gp_dpad_down
internal: true
dpad_down: true
on_press:
- lvgl.label.update: {id: gp_ddown, text_color: 0x00D4FF}
on_release:
- lvgl.label.update: {id: gp_ddown, text_color: 0x444444}
- platform: usb_hidx
type: gamepad
name: "GP D-Left"
id: gp_dpad_left
internal: true
dpad_left: true
on_press:
- lvgl.label.update: {id: gp_dleft, text_color: 0x00D4FF}
on_release:
- lvgl.label.update: {id: gp_dleft, text_color: 0x444444}
- platform: usb_hidx
type: gamepad
name: "GP D-Right"
id: gp_dpad_right
internal: true
dpad_right: true
on_press:
- lvgl.label.update: {id: gp_dright, text_color: 0x00D4FF}
on_release:
- lvgl.label.update: {id: gp_dright, text_color: 0x444444}
- platform: usb_hidx
type: gamepad
name: "GP Capture"
id: gp_btn_capture
internal: true
button_capture: true
on_press:
- lvgl.label.update: {id: gp_capture, text_color: 0x00D4FF}
on_release:
- lvgl.label.update: {id: gp_capture, text_color: 0x444444}
sensor:
- platform: usb_hidx
type: gamepad
axis: lx
id: gp_axis_lx
name: "Gamepad Left X"
internal: true
on_value:
- lambda: |-
id(l_stick_x) = x;
lv_obj_set_pos(id(gp_l_dot), 249 + (int)(id(l_stick_x) * 0.41f), 211 - (int)(id(l_stick_y) * 0.41f));
- platform: usb_hidx
type: gamepad
axis: ly
id: gp_axis_ly
name: "Gamepad Left Y"
internal: true
on_value:
- lambda: |-
id(l_stick_y) = x;
lv_obj_set_pos(id(gp_l_dot), 249 + (int)(id(l_stick_x) * 0.41f), 211 - (int)(id(l_stick_y) * 0.41f));
- platform: usb_hidx
type: gamepad
axis: rx
id: gp_axis_rx
name: "Gamepad Right X"
internal: true
on_value:
- lambda: |-
id(r_stick_x) = x;
lv_obj_set_pos(id(gp_r_dot), 647 + (int)(id(r_stick_x) * 0.41f), 331 - (int)(id(r_stick_y) * 0.41f));
- platform: usb_hidx
type: gamepad
axis: ry
id: gp_axis_ry
name: "Gamepad Right Y"
internal: true
on_value:
- lambda: |-
id(r_stick_y) = x;
lv_obj_set_pos(id(gp_r_dot), 647 + (int)(id(r_stick_x) * 0.41f), 331 - (int)(id(r_stick_y) * 0.41f));
copy-pasted this as a package & it failed
same as before
/data/external_components/e4e2b203/esphome/components/usb_hidx/devices/generic_gamepad/generic_gamepad_driver.h:456:18: error: 'class esphome::usb_hidx::USBHIDXComponent' has no member named 'get_gamepad_left_stick_x_sensor'
456 | if (parent_->get_gamepad_left_stick_x_sensor()) parent_->get_gamepad_left_stick_x_sensor()->publish_state(scale(data[2]));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
and so on
Haven't switched away from hidx-testing-002 branch since originally switching to it
You want me to try a clean build files?
Just tried again and same error #1430809698407284840 message
(diff of that and the full log this time)
0a1,18
+ INFO ESPHome 2026.3.3
+ INFO Reading configuration /config/esphome/s3-usb.yaml...
+ INFO Updating https://github.com/NonaSuomy/esphome.git@hidx-testing-002
+ INFO Generating C++ source...
+ INFO Compiling app... Build path: /data/build/s3-usb
+ Processing s3-usb (board: lolin_s3; framework: espidf; platform: https://github.com/pioarduino/platform-espressif32/releases/download/55.03.37/platform-espressif32.zip)
+ --------------------------------------------------------------------------------
+ HARDWARE: ESP32S3 240MHz, 320KB RAM, 4MB Flash
+ - contrib-piohome @ 3.4.4
+ - framework-espidf @ 3.50503.0 (5.5.3)
+ - tool-cmake @ 4.0.3
+ - tool-esp-rom-elfs @ 2024.10.11
+ - tool-esptoolpy @ 5.1.2
+ - tool-ninja @ 1.13.1
+ - tool-scons @ 4.40801.0 (4.8.1)
+ - toolchain-xtensa-esp-elf @ 14.2.0+20251107
+ Reading CMake configuration...
+ No dependencies
2,4c20,22
- Compiling .pioenvs/s3-usb/src/esphome/components/usb_host/usb_host_client.cpp.o
- Compiling .pioenvs/s3-usb/src/esphome/components/usb_host/usb_host_component.cpp.o
- Compiling .pioenvs/s3-usb/src/esphome/components/web_server/list_entities.cpp.o
---
+ Compiling .pioenvs/s3-usb/src/esphome/components/wifi/wifi_component_esp_idf.cpp.o
+ Compiling .pioenvs/s3-usb/src/esphome/core/application.cpp.o
+ Compiling .pioenvs/s3-usb/src/esphome/core/color.cpp.o
141c159
- ========================= [FAILED] Took 232.80 seconds =========================
---
+ ========================= [FAILED] Took 43.47 seconds =========================
that fluke is pricy 🫣
Fluke 196C Scopemeter Color 100MHz 1GS/s I got it for free with a dead battery
I was going to build an optical cable for it for fun
Lucky they don't turn on when the battery is toast so they thought it was only good for parts. Just pulled the battery out and it worked fine 😄
insane luck is what I`d call that 😄
yea, on ebay are some "not working / for parts" for an insane price
I think it has some weird protection relay in it as it clicked multiple times. When it had the battery in it. Then I pulled it out it still didn't power up, but then I forgot about it left it plugged in and on. Came back a few moments later and the screen was up and running fine. So from that point of view it probably seemed toast. If someone just did a quick on check.
Maybe once the battery is dead and you remove it. The protection circuit or ptc needs some time to sit there for a while to re-engage
Or that clicking sound relay was ceased then randomly open again
The force is strong in this one! 🤩 you can see the amp gauge go up when you fight the wheel!
Sorry to necropost like this.
I am currently in that same process... to get Duplex going on my ESP32-s3-boxes..
Have you ever made any breakthrough?
I'm trying to integrate this component; 'https://github.com/n-IA-hane/esphome-intercom/ '
By adapting the code here to my ESP32box: https://github.com/n-IA-hane/esphome-intercom/blob/main/xiaozhi-ball-v3-va-intercom.yaml
Unfortunately, it's not proving easy.
???
Can you move your post to the right thread?
Found out why the buttons were not working! Huge stress fracture right across the board!
if u have, put some soldrmask over the respective repaired traces - helps a lot to not get undesired "sudden" triggering on these - been dealing with lots of ps4 controllers lately, had also some with tracerepair required ..
Project doing the inverse of this (ESPHome as a HID keyboard) https://github.com/esphome/esphome/pull/16079
not sure if I'm out of the woods yet more buttons work but not all yet, Not sure if my code or needs more soldering. Have a new yellow LED showing that didn't work before 😄
Buttons that were working before are not now so probably the code. Timing of pusles is probably off
Tried to use consumer_codes.h as a reference to send zoom in and out codes (with the ESPHome PR I found the other day), but they didn't work.
Checking the latest USB spec you're missing a byte.
IE you match 2D to "Zoom In" when the spec says 22D.
22D is the only non-reserved code ending 2D, so should be fine for reading, but seems like good practice to match exactly.
Same for "Zoom out".
Looking through other codes now and it does make a difference with many
So
case|return |close enough|spec name|spec usage type|
----|----------------|------------|---------|---------------|
Media control
0xE9|Volume Up |✅|Volume Increment |RTC|
EA|Volume Down |✅|Volume Decrement |RTC|
E2|Mute |🟰| |OOC|
CD|Play/Pause |🟰| |OSC|
B5|Next Track |✅|Scan Next Track |OSC|
B6|Previous Track |✅|Scan Previous Track|OSC|
B7|Stop |🟰| |OSC|
Browser control
83|Media |❓|Recall Last |OSC|
B3|Fast Forward |🟰| |OOC|
B4|Rewind |🟰| |OOC|
Zoom
95|Help |🟰| |OOC|
are correct.
❓ = "Returns to the last selected channel or mode" which could be media
case|return |spec name |usage type|correction prepend|
----|----------------|---------------|----------|------------------|
Application launch
0x8A|Mail |Media Select WWW |Sel|1|
92|Calculator |Media Select VCR |Sel|1|
94|My Computer |Quit |OSC|1|
Browser control
23|WWW Home |*Reserved* | |2|
21|WWW Search |+100 |OSC|2|
24|WWW Back |*Reserved* | |2|
25|WWW Forward |*Reserved* | |2|
82|Favourites |Mode Step |OSC|(182 is AL Programmable Button Configuration)|
86|Internet Browser|Channel | LC|(196 is internet browser, 186 would be spreadsheet)|
Zoom
2D|Zoom In |*Reserved* | |2|
2E|Zoom Out |*Reserved* | |2|
Microsoft keyboard F-Lock keys
1A|Undo |*Reserved* | |2|
79|Redo |Keyboard Brightness Increment|OSC|2|
89|Reply |Media Select TV |sel|2|
8B|Forward Mail |Media Select DVD |sel|2|
8C|Send Mail |Media Select Telephone|sel|2|
are not
There's a lot of specific consumer codes
0x223,221,224,225 aren't designed to be specific to a web browser
15.16 Generic GUI Application Controls
With the exception of controls specifically assigned with a configuration tool, these controls apply their functions to
the application that has the user focus. Operation when no application has the user focus, when user focus cannot be
determined, or when the user focus is not unique, is undefined.
The spec calls themAC(Application control) instead ofWWW
I'd be inclined to not prepend them, or prepend them withAppinstead
These are the two keyboards I used to decipher the consumer keys
Logitech K400r
Microsoft Natural Ergonomic Keyboard 4000
There is some report layer that I had to read to make most of the keys work forget what it was called
Logitech has what you call Mute Volume Up Volume Down WWW Home
Assume what looks like a 1D joystick in the middle of the MS keyboard is Zoom In Zoom Out?
And the < > below it are WWW Back & WWW Forward?
But I don't see Next Track Previous Track Stop Media Fast Forward Rewind?
The MS keyboard looks like it has several that aren't listed (F4–F6 F10–F12 1–5)?
Seems I had the wrong picture that is the K400 above the K400r has those keys
top row you can see them in white then f-keys in blue
Yeah in the middle of the ms 4000 there is a zoom slider and yes it zooms in/out
Those 5 buttons at the top I think were hard to figure out
some are also macro keys that send two presses of two different buttons, I forget what I called the 1-5 buttons
Think they were called my favourites