EdgeTX / edgetx

EdgeTX is the cutting edge open source firmware for your R/C radio
https://edgetx.org
GNU General Public License v2.0
1.56k stars 332 forks source link

FPV simulator DCL - The Game on PS4 Pro does not detected Radiomaster Boxer when connected. #4580

Closed YeTuMan closed 7 months ago

YeTuMan commented 7 months ago

Is there an existing issue for this problem?

What part of EdgeTX is the focus of this bug?

Transmitter firmware

Current Behavior

FPV simulator DCL - The Game on PS4 Pro does not see Radiomaster Boxer EdgeTX 2.9.0 - 2.9.3 when connected, on EdgeTX 2.8.5 works fine and is detected

Expected Behavior

Radiomaster Boxer EdgeTX 2.9.3 should be detected when connecting it to the console.

Steps To Reproduce

  1. Start simulator DCL - The Game on PS4 Pro
  2. On Radiomaster Boxer
  3. Connect USB C to USB to PS4 Pro and Radiomaster Boxer
  4. On Radiomaster Boxer select Joystick
  5. Go to menu settings
  6. Go to menu controls
  7. Go to menu transmitter calibration
  8. Select refresh devicer

Version

2.9.3

Transmitter

RadioMaster Boxer

Operating System (OS)

No response

OS Version

PS4 Pro

Anything else?

On Radiomaster Boxer EdgeTX 2.8.5 works fine and is detected PS4 Pro version firmware 11.02 USB C to USB cable

pfeerick commented 7 months ago

Have you tried any of the advanced interface modes (new in 2.9) such as gamepad and multi-axis? Please note that when using the advanced usb joystick mode you will need to then go into channel settings, and tell it what each channel is to be... i.e. Axis, button, etc.

https://edgetx.gitbook.io/edgetx-user-manual/b-and-w-radios/model-select/setup#usb-joystick

YeTuMan commented 7 months ago

Yes, not detected I have on PS4 Pro Liftoff and DRL Simulator - work fine in Classic mode.

YeTuMan commented 7 months ago

It feels like I didn't connect it to ps4 pro.

iuqdwnjk commented 7 months ago

Same issue on ps5, also tried all advanced modes, the device selection in DCL shows only “None”, tried with my Jumper T-Pro v2, latest stable FW and a recent nightly build. In LiftOff the same setup (cable and controller) works fine.

ThomasKuehne commented 7 months ago

I had a similar issue with an other radio controller. A USB-C to USB-C connection only charged the device, using any USB-A cable in the connection actually enabled Joystick and SD-card access.

pfeerick commented 7 months ago

That is probably the only suggestion I could make also... double check with another device if that cable is actually a data cable or charge only (charge only should trigger the prompt on the radio, but not actually work). Orientation of the connector "may" matter also, so also try flipping the connector. Otherwise it sounds like a weird compatibility issue.

On Mon, 12 Feb 2024, 3:49 am ThomasKuehne, @.***> wrote:

I had a similar issue with an other radio controller. A USB-C to USB-C connection only charged the device, using any USB-A cable in the connection actually enabled Joystick and SD-card access.

— Reply to this email directly, view it on GitHub https://github.com/EdgeTX/edgetx/issues/4580#issuecomment-1937821413, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABJ66KNCED2QGXZQFKL34Q3YTEAEJAVCNFSM6AAAAABCN2WLSOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMZXHAZDCNBRGM . You are receiving this because you commented.Message ID: @.***>

iuqdwnjk commented 7 months ago

@pfeerick @ThomasKuehne this had been checked already, different devices and different cables. Regarding the cables - typeC-to-typeC doesn't work on PS or PC, so I always use typeC-to-typeA + adapter-to-typeC. This works well in LiftOff on PS and PC. Velocidrone and Uncrashed work well too. DCL - doesn't. Different HUD modes don't have any positive effect. As @YeTuMan mentioned, it was working in the older EdgeTX version and now is broken.

ThomasKuehne commented 7 months ago

YeTuMan:

iuqdwnjk:

Questions:

A USB hid session on Linux (PS4 debugging is a bit more challenging) doesn't reveal any obvious clues:

2.8.5 HID desciptor dump
 05 01 09 05 A1 01 A1 00 05 09 19 01 29 18 15 00
 25 01 95 18 75 01 81 02 05 01 09 30 09 31 09 32
 09 33 09 34 09 35 09 36 09 36 16 00 00 26 FF 07
 75 10 95 08 81 02 C0 C0

2.9.0 HID desciptor dump
 05 01 09 05 A1 01 A1 00 05 09 19 01 29 18 15 00
 25 01 95 18 75 01 81 02 05 01 09 30 09 31 09 32
 09 33 09 34 09 35 09 36 09 37 16 00 00 26 FF 07
 75 10 95 08 81 02 C0 C0

The HID descriptors are different: 2.8.5 reports axis: X, Y, Z, Rx, Ry, Rz, Slider, Slider 2.9.0 reports axis: X, Y, Z, Rx, Ry, Rz, Slider, Dial

Would be surprising if the Dial is causing issues.

2.8.5 HID report dump
 03 00 00 FF 07 FF 07 FF 07 FF 07 00 04 00 04 00
 04 00 04

2.9.0 HID report dump
 03 00 00 FF 07 FF 07 FF 07 FF 07 00 04 00 04 00
 04 00 04

The HID report dumps are identical. axis 5-8 have no mixer, as expected they report 1024 = 0%

ThomasKuehne commented 7 months ago

An other sim hardcoded the axis asignments, the solution there was following trick

No need to actually configure input/mixer for CH5-8. The joystick simply has to claim those axis in that order.

yemal commented 7 months ago

So, I tried both suggestions with two advanced modes, various CH setups - no luck. And I'm not aware how I can debug it on PS5.

The official game website: https://dcl.aero/game/

ThomasKuehne commented 7 months ago

The only other USB related issue I can think of is that DCL uses the manufacturer string from the USB to do some kind of matching.

In 2.8.5 EdgeTX reports:

  idVendor           0x1209
  idProduct          0x4f54
  iManufacturer           OpenTX

In 2.9.0 EdgeTX reports:

  idVendor           0x1209
  idProduct          0x4f54 
  iManufacturer           EdgeTX

That was this change: radio/src/targets/common/arm/stm32/usbd_desc.c

I've asked for more information on DCL's Discord server. Seems there was an informal process in the past https://dcl.aero/1-03-patch-on-ps4/ to add controllers.

devova commented 7 months ago

The same issue on MacOS. Neither Liftoff nor https://hardwaretester.com/gamepad can't detect newly upgraded Radiomaster Boxer EdgeTX 2.9.3. Worked well on EdgeTX 2.8.5. Actully Liftoff detects it as Boxer, perhaps via usb descriptor bot non of the channels are passed through.

pfeerick commented 7 months ago

You have me curious now... I don't have DCL (yet, waiting for next sales) ... so am wondering if it is that... picky... as to also be checking the manufacturer rather than just the PID/VID... see if this works with the boxer and DCL... it's a build of the 2.9 (so basically 2.9.4) and I merely changed the manufacturer name used for USB mode back to OpenTX... boxer-report-as-opentx-77884b6a2.bin.zip

devova commented 7 months ago

@pfeerick I flashed your build, nothing has changed, the issue remains as it was.

iuqdwnjk commented 7 months ago

ok, I'm going to build it for my T-PRO v2 and test it in DCL with OpenTX manufacturer

iuqdwnjk commented 7 months ago

I confirm, that my Jumper T-PRO v2 works well in DCL with today's master build with changed manufacturer to OpenTX in radio/src/targets/common/arm/stm32/usbd_desc.c

I've also rolled back the previous version I've used and it stopped working, upgraded again to my new build and it's well detected again.

You can test it yourself again @devova

boxer-3ebff87e8.bin.zip tprov2-3ebff87e8.bin.zip

Worth mentioning, that I've used a default model with classic Joystick mode, same as for LiftOff.

3djc commented 7 months ago

Rings a bell, I had to request an id for otx, way way back. Maybe there is matching done, will dig my archives

YeTuMan commented 7 months ago

I too confirm that my Radiomaster Boxer works well in DCL and it's detected on my PS4 Pro with the "boxer-3ebff87e8.bin" build.

devova commented 7 months ago

Unfortunately, I can't confirm that boxer-3ebff87e8.bin.zip works for me. Still same symptoms. A few debug info

> ./mac-hid-dump
...
1209 4F54: OpenTX - Radiomaster Boxer Joystick
DESCRIPTOR:
  05  01  09  04  a1  01  a1  00  05  09  19  01  29  01  15  00
  25  01  95  20  75  01  81  02  c0  c0
  (26 bytes)

IMG_6338

ThomasKuehne commented 7 months ago

I wouldn't recognize that HID descriptor as a joystick either - it delivers only one button and no axis.

@devova did you use an advanced joystick setup or the classic mode?

devova commented 7 months ago

So I decided to do a regression testing and find out on which version it actually become broken, being on custom boxer-3ebff87e8.bin.zip which was not working for me I flashed:

# v2.9.4
> ./mac-hid-dump
...
1209 4F54: EdgeTX - Radiomaster Boxer Joystick
DESCRIPTOR:
  05  01  09  05  a1  01  a1  00  05  09  19  01  29  18  15  00
  25  01  95  18  75  01  81  02  05  01  09  30  09  31  09  32
  09  33  09  34  09  35  09  36  09  37  16  00  00  26  ff  07
  75  10  95  08  81  02  c0  c0
  (56 bytes)

So the were some problems in migration, because originally I was migrating from 2.8.5 to 2.9.4

YeTuMan commented 7 months ago

Use classic mode

devova commented 7 months ago

Don't even sure how to use classic mode? I just connect Boxer via USB and select HID

ThomasKuehne commented 7 months ago

Just for future reference: The "classic" or "advanced" joystick mode is the last entry in the model setup.

screen-2024-02-17-001007

YeTuMan commented 7 months ago

I understand this mode with the default settings specified in the manual

https://edgetx.gitbook.io/edgetx-user-manual/edgetx-user-manual/user-manual-for-color-screen-radios/model-settings/model-setup/usb-joystick

HereInMyOwnSkin commented 5 months ago

Sorry, I’m not sure if I’m supposed to open a new bug, but I’m having the same issue connecting a Taranis xd9+ to DCL The Game on PS4 Pro. It appears to connect without issue to PC, so I don’t think the hardware is the issue. I have recently moved from OpenTX to EdgeTX too because it stopped working. I have 2.9.4 firmware installed.

pfeerick commented 5 months ago

You need to update to 2.10 when it releases, or use one of the release candidate builds then. This issue was closed as it was resolved by the PR referenced immediately above your comment ;)

HereInMyOwnSkin commented 5 months ago

Thanks. I'll try that. I wasn't sure if 2.10 included the fix or if devova had suggested something had gone wrong in his original migration. Will try updating to 2.10 :)

HereInMyOwnSkin commented 5 months ago

@pfeerick that worked thank you. It's connected, but unfortunately none of the inputs are working. Half way there!

ThomasKuehne commented 5 months ago

@HereInMyOwnSkin

It's connected, but unfortunately none of the inputs are working.

In Model / Setup: What is your USB Joystick Mode? Should be Classic for DCL.

Do the values change in the channel monitor when you move the sticks?

HereInMyOwnSkin commented 5 months ago

@HereInMyOwnSkin

It's connected, but unfortunately none of the inputs are working.

In Model / Setup: What is your USB Joystick Mode? Should be Classic for DCL.

Do the values change in the channel monitor when you move the sticks?

@ThomasKuehne Yes, it only detects it when it's in Classic. Any advanced setting doesn't even detect the radio. All the channel monitors on the radio show changing values, just nothing on the game. Not even in calibration. I've turned off Internal and External RF too. Is that correct?

ThomasKuehne commented 5 months ago

@HereInMyOwnSkin

Yes turning off Internal and External RF is best practice and doesn't influence how games deal with the joystick.

From your description it sounds like DCL uses the reverse axis order to identfy axis.

Try following advanced configuration as a starting point

  1. axis X
  2. axis Y
  3. axis Z
  4. axis rotX
  5. axis rotY
  6. axis rotZ
  7. axis Slider
  8. axis Dial
  9. button 0
  10. button 1
  11. button 2-9
  12. button 10-17
  13. button 18-23

If that works try switch axis X and axis Y. (first Y and then X). If the input from CH1 is still displayed in the same position in DCL, then DCL identifies axis by their order.

Then remove axis Dial. If DCL stops working or shifts the inputs then it is using the revers axis order. Meaning you'll have to define 8 axis even if only 4 are actually used.

HereInMyOwnSkin commented 5 months ago

@ThomasKuehne sorry, I'm not sure what you mean. I have the radio set up as TAER (I think!?) and DCL seems to suggest it's looking for that. Do you mean changing from classic to advanced? Thank you!

pfeerick commented 5 months ago

Yes, he is talking about setting it up in advanced mode. When you have it configured for advanced joystick mode, yoiu'll be able to configure each axis as described, in order to see if that is what DCL is looking for.

When you said "Yes, it only detects it when it's in Classic." before... do you actually mean "it is detected, but none of the sticks work, when it is in Classic mode"?

On Mon, Apr 8, 2024 at 4:02 AM HereInMyOwnSkin @.***> wrote:

@ThomasKuehne https://github.com/ThomasKuehne sorry, I'm not sure what you mean. I have the radio set up as TAER (I think!?) and DCL seems to suggest it's looking for that. Do you mean changing from classic to advanced? Thank you!

— Reply to this email directly, view it on GitHub https://github.com/EdgeTX/edgetx/issues/4580#issuecomment-2041546672, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABJ66KIEAER2NMNM3WNBXBDY4GC3RAVCNFSM6AAAAABCN2WLSOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDANBRGU2DMNRXGI . You are receiving this because you were mentioned.Message ID: @.***>

HereInMyOwnSkin commented 5 months ago

@pfeerick yes that's accurate. In classic it detects the radio, but none of the controls work. I shall try advanced later today. Thanks both.

HereInMyOwnSkin commented 5 months ago

@ThomasKuehne I added those all in advanced. It still didn't detect unless I switched back to Classic, but it's picked them all up now. Swapping X and Y didn't seem to have any effect, nor removing Dial. My only issues seems to be that the throttle only works from half throttle to max, but is -ve to +ve on the radio. Thanks again for you help (and @pfeerick)!

HereInMyOwnSkin commented 5 months ago

Well I thought i understood what was going on, but I can't work it out. It only seems to connect with Classic. It then detects what's in the photo. Twice now I've managed to get it to work (where it detects the radio and then the inputs actually function too), but I can't actually work out what it is that's making that happen. Initially it just seems to detect as in the picture, but none of the inputs actually do anything. image