OpenDeck
OpenDeck copied to clipboard
Ajazz AKP153 and AKP153e support
Please add support for yet another deck - Ajazz AKP153: https://ajazzbrand.com/product-tag/akp153/
Hi,
As you can imagine, it's not easy for me to add support for devices I don't own.
As mentioned in the README, I'm happy to help you out with implementing support for it in OpenDeck, and welcoming to pull requests.
I understand that. I already ordered mine and will try to test it in mid May (hopefully).
Awesome!
I hope this link helps. https://gist.github.com/ZCube/430fab6039899eaa0e18367f60d36b3c
And https://github.com/ZCube/elgato-streamdeck/tree/ajazz-akp153 ..
Yep, was just poking around updating dependencies and saw @ZCube's contribution to the library!
I'm updating OpenDeck to use the newest version now, I'll push the changes later today.
Hi @ZCube & @ninjadev64! I compiled and ran the latest version of OpenDeck but my device isn't getting detected on my Linux OS. When I check the device IDs, I see 0300:1010, which does not look like it matches the IDs in ZCube's commit (this one). My device is the AKP153E, I am thinking the E is a different variant which is not accounted for with the commit. I was able to pass it through to a Windows 11 VM and get it working with the manufacturer's software, but no dice in Linux.
Wondering if this could be looked at through this existing issue? I can provide any information needed from my end, just not overly savvy with the coding required for this.
Thanks!
Hey @YeloMelo95!
I feel like this is probably more @ZCube's department, but if they don't have the device either then it may be slightly harder - I'm sure they would be happy to guide you through collecting the required information to add the device to the elgato-streamdeck library, though.
@YeloMelo95 I have the Chinese domestic version, the AKP153. I chose this model because it was a bit cheaper. It seems to have slightly lower specs, and the firmware appears to be different as well. Since I don't have the AKP153E model, it is difficult for me to help with that specific model. In my case, I referred to the https://wiki.wireshark.org/CaptureSetup/USB page for guidance.
Ah yep of course, what I meant was you could guide them through the packet capture process better than I could and impart some wisdom with regards to the kind of data format used which is likely to be similar.
Hey @ninjadev64,
I have just discovered your project, and from what I have seen it would be perfect to replace the original software of the Ajazz Streamdock. Now I have installed it (on Windows with the Windows installer), but my akp153 is not recognized. Is it currently not supported or do I have to do something after installing your software to use it with my akp153? Thank you already for your work and help!
As said in the comments above, only support for the China version (AKP153E) and not the normal AKP153 has been added to the library we use.
Oh, sorry, it's the other way around. Have you made sure that the Ajazz software isn't running?
Hey @ninjadev64
I was also wrong, I actually have the akp153e. But if I understood the comments above correctly it would be possible in principle to integrate the akp153e into Open deck, you would just have to do some debugging with the help of https://wiki.wireshark.org/CaptureSetup/USB and zcube? I would like to help here, maybe @ZCube can guide me through the debugging process. Anyway, thanks for your reply
Hey @Lionsit,
Absolutely, you would have to get ZCube to guide you through the process, but it should be relatively straightforward.
@ZCube Someone else with an AKP153 is getting a segmentation fault. They think it might be a device issue, but it faults at atomic_compare_exchange somewhere as many tokio tasks are spawned repeatedly. Just posting in case you have any ideas about obvious things to check.
It looks like I am kind of unlucky guy :open_mouth:
I decided to buy the AKP153 to have a bigger and not that expensive device. But unfortunately I received an 153E one (you never know what you'll really get from Ali express). So I decided to give it a try, by following these instructions. I had to divert a bit according to my knowledge as a software developer, but anyway the core idea was the same.
I am updating @ZCube code to also support Akp153E and send a patch. Nothing fancy, just adding it alongsize Akp153. It seems to work except this part lines 239-246.
According to @ZCube 's documentation this is the "ACK part". But I'd agree with @d-kja that this part should be removed in order for the events to be fired. Otherwise the condition in line 245 is always true and the button state never gets propagated.
Moreover, the condition in line 238 contradicts the one in line 244. If the value at position [0] is not zero, the control flow exits, so the next commands could never be thrown.
One thing I don't know is, if this indeed is required for Akp153 (but it is not required for Akp153E). If this is the case, I'll put this block of code into a conditional run to run only on Akp153. Otherwise maybe it shouldn't be there after all.
Please @ZCube your insight on this is really crucial.
I've renamed it as someone on Discord had an AKP153R device earlier today.
I found the solution to the ACK part. The patch from @d-kja is not required. The actual size should have been 10 bytes, since on the 10th byte it's the number of the button index. All button ids start from 1, so index 0 could be indeed the ACK command. The original patch from @ZCube was only 8 bytes, that's why it didn't work.
I updated the patch to follow this observation and keep the ACK command without breaking all other commands.
This devices are also sold as "Mirabox StreamDock 293S". I got mine over AliExpress, with a "FHOOU" (logo at the front) and "Model: HSV 293S, Product: MBox" with a MiraBox Logo at the back.
See StreamDock293S at https://sdk.key123.vip/en/guide/overview.html
They also released some SDKs, i.e. https://github.com/MiraboxSpace/Linux-StreamDock-PythonSDK
Edit: https://github.com/streamduck-org/elgato-streamdeck/pull/21
@YeloMelo95 and @Lionsit: the AKP153E is supported in OpenDeck since version 2.2.1 thanks to @teras's contributions.
The AKP815 is also supported thanks to him, and the HSV293S should be supported soon once it is merged in by TheJebForge.
I am just curious why AKP153R and AKP03R are still not supported in v2.2.1? Do you need any assistance\help?
I am just curious why AKP153R and AKP03R are still not supported in v2.2.1? Do you need any assistance\help?
No one who owns the devices has contributed support for them to the elgato-streamdeck library.
I originally left this issue open so that it could be closed when the AKP153 was supported, as the plan was originally to have it supported in OpenDeck and not in elgato-streamdeck as I did not know how similar the protocols were.
When I learned it had a few variants I resolved to leave it open until they were all supported, but as it becomes clear to me that Mirabox and its subsidiaries sell a ridiculous plethora of the same and similar device, I will be closing this issue and requesting that device support is tracked with the upstream library, where it is implemented and where discussions belong with the maintainer of that library so they can see fit for their own project without interference from a developer of a different project (me).