I’ve been testing the new 9.3 update using an ESP32-S3 with both Wi-Fi and dual USB direct connection, and I’m running into a pretty serious polling rate issue.
My target device is my main PC, while reWASD and the ESP32-S3 are running on my laptop. The boards I’ve tested this with are an ESP32-S3 N16R8 Gold Edition Development Board and a LILYGO T-Dongle-S3 ESP32-S3. When the virtual controller is connected to the target PC through the external device option, the polling rate drops massively. Instead of anything close to 1000 Hz, I’m seeing input intervals around 10 ms and sometimes even jumping into the 30–60 ms range, which is basically a ~900 Hz loss.
What’s strange is that if I turn off the external device checkbox in reWASD and just run the virtual controller locally on the laptop, the polling rate is exactly what it should be at 1000 Hz. The problem only shows up when the controller is routed through the external device to the target PC.
This doesn’t seem right at all, especially considering it happens both over Wi-Fi and in dual USB mode. I’ve tested this with two different ESP32-S3 boards and the behavior is identical. To rule out network or PC issues, I also tried a completely different program that sends joystick input over the network from one PC to another (UDP), and that maintained a solid 1000 Hz polling rate. Other remote play methods behaved the same way, so this doesn’t seem like a general network limitation.
I’ve tried all available virtual controller types (Xbox One, Xbox 360, DS4), and I also tested using authenticated controllers for DS4 and Xbox One modes to see if that made any difference, but the results were the same.
At this point it feels like it could be an ESP32 firmware or timing issue specific to how reWASD is handling external devices in 9.3. It’s pretty frustrating, especially after spending close to $60 on multiple ESP32-S3 boards just to rule out hardware problems.
Does anyone know if this kind of behavior was present with the ESP32-S2 in the past, or if the physical device’s polling rate was always used correctly there? And in the meantime, are there any settings, or workarounds I could try while this hopefully gets addressed?
My target device is my main PC, while reWASD and the ESP32-S3 are running on my laptop. The boards I’ve tested this with are an ESP32-S3 N16R8 Gold Edition Development Board and a LILYGO T-Dongle-S3 ESP32-S3. When the virtual controller is connected to the target PC through the external device option, the polling rate drops massively. Instead of anything close to 1000 Hz, I’m seeing input intervals around 10 ms and sometimes even jumping into the 30–60 ms range, which is basically a ~900 Hz loss.
What’s strange is that if I turn off the external device checkbox in reWASD and just run the virtual controller locally on the laptop, the polling rate is exactly what it should be at 1000 Hz. The problem only shows up when the controller is routed through the external device to the target PC.
This doesn’t seem right at all, especially considering it happens both over Wi-Fi and in dual USB mode. I’ve tested this with two different ESP32-S3 boards and the behavior is identical. To rule out network or PC issues, I also tried a completely different program that sends joystick input over the network from one PC to another (UDP), and that maintained a solid 1000 Hz polling rate. Other remote play methods behaved the same way, so this doesn’t seem like a general network limitation.
I’ve tried all available virtual controller types (Xbox One, Xbox 360, DS4), and I also tested using authenticated controllers for DS4 and Xbox One modes to see if that made any difference, but the results were the same.
At this point it feels like it could be an ESP32 firmware or timing issue specific to how reWASD is handling external devices in 9.3. It’s pretty frustrating, especially after spending close to $60 on multiple ESP32-S3 boards just to rule out hardware problems.
Does anyone know if this kind of behavior was present with the ESP32-S2 in the past, or if the physical device’s polling rate was always used correctly there? And in the meantime, are there any settings, or workarounds I could try while this hopefully gets addressed?


Comment