r/steammachine • • 12d ago

Discussion Got the JSAUX Pixel Matrix Faceplate this morning, took it apart, and made my own Decky plugin for it. This thing rules.

My JSAUX Pixel Matrix Faceplate (the 64x54 RGB one, not the e-ink one) showed up this morning, so naturally the first thing I did was take it apart. Turns out the "screen" is a little LED matrix behind a diffuser: 24 LED driver chips, a CH340 USB serial chip, a 2 MB flash chip, and a microcontroller with the markings sanded off the top. Board photos and the whole story of figuring it out are in the write-up, and the serial protocol is documented here.

After that I made a Decky add-on for it instead of installing their software. It shows the game you're playing (hero art with the logo), the Steam logo between games, a clock, or a glow that follows the light bar, and it turns the screen off when the Steam Machine sleeps. I leaned heavily on GabeCubeAura for this. Its source showed me how a Steam Machine Decky plugin should work, from figuring out which game is running to finding the artwork, and that's the only reason this came together so fast. Massive thanks to Alyenax, and if you don't have GabeCubeAura installed yet, go fix that.

Honestly, I love this thing now. It's kind of crazy how a little screwing around turned it into something so much cooler than their initial advertised features provided.

A few things I found along the way:

  • Everything you send the panel gets written to its flash, even JSAUX's own once-a-second stopwatch. Whether that wears it out depends on firmware nobody can see yet, so my plugin only sends a picture when it actually changes.
  • On the included USB-A cable, a bright white screen at full brightness pulls more power than the port gives. Mine browned out, got stuck rebooting, and knocked my Steam Controller dongle offline. My plugin caps brightness for really bright pictures.
  • Their Decky plugin lists "OpenAI Codex" as its author and includes a screen that reads your OpenAI/Codex login tokens. Worth knowing before you install it, I've not messed with the official software beyond looking at how it worked. This is probably innocuous.

Right now everything I'm doing is limited by what I could figure out from the outside. I don't want to dangerously probe it, read the firmware straight off the chip, or go around the USB connection when JSAUX seems committed to open sourcing this and could post a GitHub link any day. In the meantime, it's sick as hell.

Here's the GitHub with my Decky plugin if you want to mess with it: https://github.com/hodapp/pixel-faceplate (install steps are at the top of the README).

A little about me: I'm old as dirt, I've got a lot of experience doing this shit, and I write a lot of custom ESP32 firmware for smart home stuff around my house. So it should be pretty solid, but consider this a very early proof of concept, tested only on my own Steam Machine. I'm sure it'll all get a lot cooler once JSAUX releases a way to update the firmware, because I don't love that everything has to be written to flash right now instead of going straight to the screen. It probably makes more sense for this to be folded into GabeCubeAura eventually but maybe once JSAUX reveals some more of its secrets so we're not just wasting flash write cycles constantly.

Oh, and if you're worried about airflow: two extra 6x2 mm magnets (or whatever you have handy that fits, I've printed tons of Gridfinity so I have a million of these) on each mount point give it about 4 mm more room to breathe.

471 Upvotes

82 comments sorted by

15

u/rezendes 12d ago edited 9d ago

They should make one that’s an actual led matrix

edit I guess it is an LED matrix, I was misled by a reviewer.

1

u/_Gaeus 2TB 11d ago

Yup...

1

u/ehodapp 9d ago

This is an actual LED matrix.

1

u/rezendes 9d ago

Really? I watched a review where they said it was an LCD screen emulating an LED matrix. Just now actually reading your post, I see you went into detail. I wonder why the reviewer thought that? The diffuser layer maybe?

2

u/ehodapp 9d ago

The cool thing about reviews these days is you can just make stuff up and no one checks. They could have undid four screws and seen the LED matrix. They’re fooled by the diffuser they have between the front case and the matrix itself.

16

u/Kalark GabeCube Enjoyer 12d ago

Installed on my SM and it's working great!

9

u/Kalark GabeCube Enjoyer 12d ago

10

u/PurbulentTriest 11d ago

Metal Gear Squid 

8

u/Kalark GabeCube Enjoyer 11d ago

5

u/ThatGuyWhoKnocks 12d ago

Got mine today and I look forward to trying your plugin out, great work :) also, I disagree with everyone saying the side-USB cable is ugly, it’s really not very noticeable.

6

u/Ok_TomorrowYes 12d ago

I’ve been absolutely addicted to Graveyard Keeper 2 since it came out

3

u/iclonethefirst 12d ago

How is it in comparison to the first one?

3

u/Ok_TomorrowYes 11d ago

People have differing opinions but I like it much much more. The story and tech tree is all woven together so you no longer feel like you are just researching random things. The map is also beautifully crafted with a much better flow and things are nice and close. And much less janky and runs better but still stutters a bit though

2

u/radakul 12d ago

Debating buying it. I enjoyed GK1, but its addictive lol

1

u/kipdjordy 12d ago

How is it and the first one? Thinking of picking it up to add to my monumentous backlog

1

u/ehodapp 12d ago

I've been loving GK2 but I think the move is to buy and play GK1 first. It goes on sale all the time and is a very finished / mature game with fun DLC. The sequel is very good, but it's a typical indie game launch in that there's a lot of rough edges that'll inevitably get fixed. By the time you beat GK1, GK2 will probably be totally locked in and on sale. You just need to discipline of r/patientgamers

3

u/Alyenax 512GB 11d ago

I’ve gone through a good part of your repo and there’s a ton of really useful stuff in there. The documentation is super detailed and I learned quite a bit just reading through it.I think there’s a lot of potential to do some really cool things with GabeCubeAura around this. Thanks for putting all of this together.
I’m really looking forward to trying your great plugin when I get the chance and seeing how far we can push the idea.

2

u/Doshin108 12d ago

They said 'the business wasnt open' when they tried to deliver and now I have to wait 3-7 days?

Never had any trouble from any carrier till today. :(

1

u/ThatGuyWhoKnocks 12d ago

Mine just chucked it at my door

2

u/Doshin108 12d ago

Oh it just showed up.. the shipping box was mangled and smashed but the inside box seems fine.

I got the e-ink one. Hype to hack it up.

2

u/ehodapp 11d ago

My shipping box was obliterated as well. Looked like someone just stomped the shit out of it. I wonder if ours rode on the same plane together.

1

u/Doshin108 11d ago

Lol. Ya.. stomped on is how it looked.

1

u/RiverRespawn 11d ago

Same with mine.

1

u/ThatGuyWhoKnocks 11d ago

Yea, same, outside box look like it took a beating but inside box was fine

1

u/Doshin108 12d ago

Ya.. That's what every other delivery has ever done since I've lived here over the past 3 years.

2

u/zbro3 11d ago

Dude I'm not gonna lie, I think I'm gonna try to return my e-ink screen to get the pixel matrix because of what you have done. I e ink is cool but this is more what I want out of a faceplate

1

u/The-Radio-Man 9d ago

I’m doing that too. The e-ink is cool but the really slow refresh rates and transitions haven’t been great.

2

u/auto_exec 9d ago

Hey! Love the plugin, got it installed.

Just a quick question - seems like the bottom portion of most images is darkened (based on a quick review, I guess this is intentional to account for a logo overlay?)... on the majority of the images i've tried so far (e.g., chants of seenaar, dead as disco) it just makes the bottom half of the image unreadable and looks pretty off.

Any ideas if this is due to the specific images being used in these games? Or is there something I'm missing in my setup to address it?

1

u/TabloidA 8d ago

I get this too!

1

u/auto_exec 7d ago

In case you haven't seen - a new 0.2.1 release is up (https://github.com/hodapp/pixel-faceplate/releases/tag/v0.2.1) and includes several new options about the handling of art and logo.. including whether or not to use a logo, and/or add the dim band behind it... also has the ability to set the screen style per game, which is great!

Thanks u/ehodapp for the awesome update!

2

u/Timeerased 6d ago

New release is AWESOME, finally fixed the dim light and now we can manipulate logos, have profiles for games, thats really cool. One last thing is I just CAN'T use gifs, every gif I try to throw at it, nothing appears (jpg and pngs are fine). But the rest is WAY better than JSAUX (which also has a lot of bugs like not showing playtime)

4

u/tldr1369 12d ago

Me with the aliexpress knockoff

1

u/Possible_Sun_913 12d ago

Very nice work. I have one on the way so will deffo check out your repo.

1

u/damonlebeouf 12d ago

holy crap. 👍🏻

1

u/Kalark GabeCube Enjoyer 12d ago

YO THIS IS SICK! I just got mine this morning as well, snagging this plugin, thanks so much man!

1

u/Poro_Actor GabeCube Enjoyer 12d ago

i’m wondering if that’s why my screen went dim eventually before rebooting. Good work can’t wait to check it out.

1

u/tannerwastaken 12d ago

Holy shit! Will you be working on this more? I think you sold me a Pixel Matrix!

7

u/ehodapp 12d ago

Yeah, but I'm kind of stuck until one of 4 things happens, roughly from least to most effort on my end:

  1. JSAUX posts their code to GitHub, including the firmware and how to flash it.

  2. JSAUX responds to my email with answers to my questions. I got an out-of-office reply saying they'll be gone or slow until 10/9.

  3. I get bored enough to start probing for how to flash it myself. The problem is that blindly sending commands is a real good way to soft-lock it or accidentally wipe the firmware.

  4. I buy the right-size chip clip on Amazon and dump the flash chip directly to see what I can learn from it.

What really sucks is that they sanded the top off the main chip. This would be so much easier if I could pull the specs for exactly what they're using instead of guessing. Right now the main limitation is that everything the screen shows has to be sent as a GIF and gets written to flash on the faceplate first, so anything live is slow (about 5 fps at best) and has a clear flash as the screen redraws. Artwork works really well because it happens while the game loads, so you never notice the latency, and it's just one write per game, so you're not thrashing the write cycles. With a tiny bit more info we could draw to the screen directly, which would unlock something like 20–30 fps for audio visualization and a bunch of other cool shit.

1

u/tannerwastaken 12d ago

Amazing! Well I hope you’re able to do that - I know I’d certainly enjoy it!

1

u/temictli 11d ago

Daaaaaamnnnn, that does sound cool.

1

u/schM0ggi 12d ago

Deep respect for you, sir. Will observe everything in the next days/week. Maybe it's actually worth buying one of these.

1

u/UrabusZRB 12d ago

This is a neat plug in, thanks

1

u/RubiksCuban305 12d ago

Dude I tried it and it’s amazing. Thanks for the clean instructions. You are a saint.

1

u/Grizzled_progressive 11d ago

Absolutely sold me on this product, it already looks enticing with the stats but with displayed art it really comes alive. Can’t wait to get it in and try out your plugin 😁

1

u/gonzotw 11d ago

Reply to find this when mine arrives.

1

u/cbusche 11d ago

That is very cool and a great idea. Thx for sharing

1

u/Aggravating_Plan11 11d ago

Would be awesome if we could get the thing to display game info like health or a live map or in game scoreboards or something.

1

u/No-Papaya4273 11d ago

This is very cool! Would it work on the e-ink panel? 

1

u/jerjergege 11d ago

If they find a way to hide the USB port I would get one.

1

u/RetrOnline 11d ago

Oh man, I really want this Pixel Matrix Plate for my Steam Machine too. One of the things holding me back right now, though, is that the USB C port is on the left side.

Can the plate simply be rotated 180 degrees and snapped back on that way, so the USB C port ends up on the right side instead?

The only issue then would be the lack of an option to rotate the display itself, at least in the JSAUX software right now. If display rotation were possible, I’d honestly order one right away.

I absolutely love the idea behind it, and I’m especially glad there are creative people like you still coming up with cool stuff like this.

And yeah, when it comes to data transfer and especially power requirements, having a wired USB C connection there definitely makes sense.

And did I understand that correctly? Can the display actually be made even brighter, as long as it isn’t limited by the available power (for example, with a separate external power source)?

1

u/CalcProgrammer1 11d ago

I just got mine, I'm glad you've already done the hard work of reverse engineering the protocol. I wanted to add this to OpenRGB, but the lack of a software streaming mode REALLY sucks. Having to upload everything as static or fixed-frame GIFs is really dumb. I'm not sure why so many RGB products only support saving to flash memory, which is slow and wears out with rapid updates. Just give us a raw pixel pipe in a future firmware JSAUX, please, let us just drive the thing directly from software so that we can do smooth animations without destroying the flash memory.

1

u/23fuzzy 10d ago

That’s cool !!!

1

u/Particular-View-3567 9d ago

It seems your app doesnt work with the latest decky (or steamos) and decky says it needs to be updated :(

1

u/Particular-View-3567 9d ago

nevermind I didnt uninstall the jsaux one. But then had an issue where the lower part of the screen is way more dim on artworks. I'll wait for a new release

1

u/UltimateAK86 6d ago

This is really awesome. Thank you for all your work on this!

1

u/mfinsmi1 9d ago

are you keeping your faceplate powered on even when the console is alseep? or are you powering down in decky before powering down the console? do you think leaving the faceplate on 24/7 cud cause issues?

2

u/ehodapp 9d ago

The addon has settings for turning it off when you turn the Steam Machine off. These LED matrices should be good for 50k+ hours of full bright operation before they start to dim, I’m not sure how worried I’d be about making sure it looks good 7 years from now. Feel free to fork and make it behave however you want though.

1

u/v1k0d3n 9d ago

Ha! I didn’t even realize the same thing for the E-Ink display and wrote my own plugin. JSAUX is scraping user auth tokens for AI clients (Codex specifically) and then capturing the last 20 conversations - and I took issue with that, esp since their client software needs to be installed manually (outside of Decky) and required sudo privs (while also writing a systemd unit and udev rules). It was way too sus for me…esp since they don’t provide their source code (at least that I’m aware of).

So I wrote a completely transparent alternative. I wrote it in Golang so that way it wouldn’t run into python dependency issues like I had with their software. You can find it here, for anyone is interested. https://github.com/v1k0d3n/monoink

1

u/Timeerased 8d ago

just a question that applies to the official app too : where does the weather info come from ? Don't they need your coordinates ?

2

u/v1k0d3n 8d ago

They capture it by reading your public IP address by curling a url (https://ipwho.is). I can’t stand apps that call outbound like that. So when I created my app, I’m allowing the user to add their own location (city, zip code, etc). The user should have the option to set things like this…and if an app goes outbound for data, it should be upfront with users about where it’s calling, why, and what data is being used. My app uses the same weather reporting service (open-meteo.com), but the user can set the weather location to whatever they want (so it works even if you want to use a VPN).

1

u/RacingGun 9d ago

I wonder if it could work with something like this: https://apolloautomation.com/products/m-1-led-matrix

The size is a little off to make a good front plate, but still might be cool to have similar functionality (showing game art and such)

1

u/TabloidA 9d ago

Just got mine and love the software! Do you think you'd be able to add something to have different screens depending on the account being used?

1

u/TheFlandy 8d ago

I would love the game art + a clock at the same time. Is that possible?

1

u/Timeerased 8d ago

This would be perfect if the lower part of the screen wasnt dimmer when showing the art of the games. It looks real bad on many games (blood of dawnwalker, galactic racer...). I'd rather have a dimmer look on 100% of the screen, than bright above, dim below.

Also weirdly every GIF I tried doesnt work, only png/jpgs

1

u/Comfortable-Emu-2352 8d ago

The artwork doesn’t show for non-steam games, while GabeCubeAura does recognise those
Is it a known issue ? Thanks a lot for your work, so much potential !!

1

u/Dragonfly275 8d ago

So it can be used without a Steammachine?

On a normal PC over usb?

1

u/Chief_Economist 6d ago

Installed. Great work dude. I might play around with your repo and see if I can help any.

1

u/Wolfchi 6d ago

This is exactly what I have been waiting for

1

u/Efficiently-Simple 4d ago

This looks amazing and I’m gonna have a tinker with mine with your plug in tomorrow. In the meantime I’m just using the software it came with but for some reason it’s dimming automatically not sure what’s happening. Brightness is on 100% but when I boot up games it goes darker? Not sure if you could shed any light on as to why?

1

u/frostforgesauna 5h ago

Non-Steam games added to library with SteamGridDB images AND games with launchers (Witcher 3 Remastered) did not show the artwork and logo.

Fixed that with in a quick Claude fork.

Also added cats as a standby image - https://github.com/kjamert/pixel-faceplate/releases

1

u/ehodapp 4h ago

Just do a PR and I’ll merge it in after checking your Claude didn’t do anything too insane.

0

u/flower4000 Blue 12d ago

Is the decky plug in just on the deckyloader “store” front?

5

u/ehodapp 12d ago

Nah, I don't really want whatever support obligations might come with that for what (right now) is basically just a proof of concept. I'd rather help the GabeCubeAura guy just integrate this into his plugin than maintain my own.

0

u/Inevitable_Return_21 11d ago

I like this plug in. Looks pretty cool when I was playing Onimusha

-7

u/headphonesXX 12d ago

tl;dr its a half-baked product, like what everyone says. and the side usb port is absolutely ugly af

17

u/ehodapp 12d ago

tl;dr it's a really cool product that just needed a couple hours of dev work to make a cool plugin. Pricing is pretty good too, after looking at what's in there it'd be hard to get this done for much cheaper. Unassembled components would be like $60ish before you even get into whatever PCBWay would charge.

6

u/St4va 12d ago

half full glass person right here

13

u/ehodapp 12d ago

Man that's been everything to do with Valve hardware lately, it's nuts. I got my Steam Frame last week and it rules, you head over to that subreddit and it's like Gabe is personally killing everyone's puppy. I'm not sure if there's some coordinated astroturfing going on, if this is just reddit being reddit, or what.

3

u/St4va 12d ago

That’s the internet in general. Nothing will ever be like the old vBulletin message boards.

Regarding coordination, maybe, but it’s also incredibly easy for even a single person to manipulate posts and upvotes using bots and AI.

Finally, costs are rising rapidly, normalization of chaos, social media influencers, and AI is starting to take over entry-level jobs. People are unhappy, and things are going to get worse.

Anyway, I love my steam machine. Keep having fun.

-1

u/headphonesXX 12d ago

i read the parts list from valve diy version was around 90-100 but at least didnt have an ugly usb port on sticking out bc of the internal battery

9

u/ehodapp 12d ago

If I were designing this I'd have gone the JSAUX route, and JSAUX actually made the same call: their e-ink faceplate has a battery and Bluetooth, and the LED matrix one is USB powered. An LED matrix can pull up to 3.5 W, so a battery the size of the one in their e-ink model would last maybe half an hour. Battery works for e-ink because it barely draws anything, but the trade-off is the screen flashes on every refresh.

For eventual real-time streaming to the display, USB beats Bluetooth by a mile. Once I get that figured out it's going to get really cool.