PSVR2 on FW16

Yep, correct. Imagine that you have a DisplayPort cable that’s plugged in on one end into the laptop’s built-in display. The mux chip just does the act of unplugging it from the port on one GPU and plugging it into another. Important here is that this is the “finished” DisplayPort connection which carriest monitor display data.

In this way I am not sure what happens in a non-full-screen scenario really. I would guess that the laptop display would still be served by the iGPU with dGPU rendering the in-window portion and streaming the picture data over PCIe into the iGPU’s framebuffer. But I may be wrong and it may instead start rendering the whole Windows UI on dGPU instead, so nothing at all is done on iGPU in that case. Come to think of it, it’s probably the latter.

(But I want to add here that I am not super familiar with this, so I’m making quite a number of assumptions/educated guesses here, so anyone who claims expertise should override what I’m saying here)

Oh, you definitely can have multiple GPUs on desktop outputting stuff to different monitors. Try it and see how the window that you drag across monitors is not super synchronized :slight_smile:

This is also common in the eGPU scenario as streaming the rendered graphics back over the cable (as PCIe data, not DisplayPort) takes up quite a bit of pretty limited bandwidth, so it’s customary to game on an external display plugged directly into eGPU.

1 Like

Thanks for the information, @Gmanny! I feel like an idiot for saying that you can’t run displays off multiple GPUs inside a computer simultaneously when I literally worked at Microsoft for 15 years, and my dev box was running 3 displays connected to 3 different PCIe GPUs that each had one DVI-I connector. I believe they were Matrox Mystique cards if I’m not mistaken because they gave the smoothest desktop rendering experience.

I’ll just chalk that up to having a senior moment since I’ll be turning 45 this month! :wink: I do remember back in the day dragging Windows between the screens, and they would not transition smoothly when you had two in landscape and one in portrait in the center, making an “H” configuration, which is what I ran with for most of my career as a developer. Only a single GPU in the box will display text modes when booting as the primary, but once you’re in Windows or another operating system that supports drivers, it can boot up the other cards and send data to them, so of course they could output that to the screens.

I think you have some good assumptions on how the Framework is compositing the two GPUs together. If you open the Task Manager in Windows, you can even add the “GPU Engine” column under Processes, and you can see which GPU each application is utilizing. The Framework will happily display all of them on the main display as if it’s just one big happy GPU. So, I think you’re probably right that when things are in windowed mode, whichever GPU is the primary is rendering the desktop, and any contents of a window that is displaying “hardware accelerated” graphics from the dGPU is just being streamed into the frame buffer as if it was the monitor, and it’s getting muxed together by Windows itself. You can even drag it between screens connected to different GPUs, and the contents of the window will continue to be rendered by the actual GPU it started with, supporting this theory.

But, as you said, when the application goes full screen, it can directly connect the GPU that is doing the rendering to the display to maximize performance, so it no longer has to go through the iGPU at all. This also explains why the dGPU USB-C port on the back of the Framework 16 can’t display anything on VR that is running on the dGPU, only things that run on the iGPU. I bet the reason for this has to do with how VR uses two different displays showing 2 different images at the same time instead of a single display like a monitor, which would work with the muxing, whereas the VR doesn’t work with it, so it has to be physically connected to the GPU that is displaying the full-screen graphics.

I’d love to see a Framework engineer jump in here and correct us so we could see how close we are to understanding how the MUX chip works and how it only seems to impact VR when it comes to which USB-C port you plug into on the Framework but doesn’t have any problem with standard displays rendering using both GPUs on whatever is plugged into it. I should try plugging my VR into my main PC and forcing a VR app to the iGPU to see if it has the same problem. Because if it does, then that would confirm that this isn’t even a Framework muxing-specific issue at all and it’s just Windows being Windows. :wink:

Thanks,
Jerry (aka. Barnacules)

Apologies to anyone waiting for more reviews of the PSVR2 on the FW16. Life has been hectic.

I have tested and successfully used the PSVR2 exactly once, though for a good many hours. My setup was pretty much exactly as described by Sony with some Framework touches. A standard DisplayPort cable plugged in to a Framework DisplayPort adapter in the dGPU USB-C port, USB-A cable plugged into a Framework USB-A adapter in port 3 (front-left port), and the power plugged into the wall. I had previously paired the controllers, and upon powering them up, they both connected without any issue. The headset gave me some very brief issues and I’m not sure if it was the USB-C cable from the headset or the DisplayPort cable/adapter combo sticking out of the back of the laptop, but fiddling with both got the headset itself working (though I suspect it was the USB-C cable plugged into the Sony adapter, as the headset didn’t seem to be powering up). Once the headset did powerup, initial setup went well, and I was soon in SteamVR for the first time.

Once in SteamVR, it was relatively quick and easy to get setup and familiarized with the controls, movement options, and, most importantly, start playing PC VR games! Half-Life: Alyx! I lost track of time playing, and accidentally played until ~2AM.

Some of my thoughts on the experience, both PSVR2 specific and general PC VR:

  • I don’t think you need anything special (apart from the PSVR2 Adapter) in order to use the headset. I used a standard DisplayPort cable and a Framework DisplayPort adapter and it worked well. That being said, just because it did work, doesn’t mean I’d encourage others to do it too. The adapter hanging off the back of the laptop was a bit more precarious than I’d like, and adding a large, stiff DisplayPort cable didn’t improve how precarious things felt. @Barnacules_Nerdgasm’s suggested USB-C → DisplayPort cable isn’t necessary, but is something I’m likely to get.

  • The PSVR2 adapter is powered with a tiny 5V, 3A barrel jack. I believe FW16 supports 15W of output via USB-A or USB-C on most of the ports (though not the dGPU port, if memory serves). I’d like to try to make an adapter that is USB (probably A, because soldering to that pinout is significantly easier) to the tiny barrel jack, or remove the barrel jack and swap it for a USB-C port, so that the adapter can simply be powered by the laptop (or a multiport USB wall charger). If it uses 1 USB-A port for data, 1 USB-C port on the dGPU for video, and 1 USB port (either A or C) for power, while not being as compact and single cable as the headset connecting to the PS5, it would be a little bit tidier and more compact than the current implementation.

  • It works well enough that I lost track of time for a few hours.

  • Normally, I game with the FW16 on a balanced power profile, and while plugged into a 100W Anker charger. Under normal usage, getting a few hours of gameplay in before the laptop complains of low battery is common, with most play sessions not getting close to low battery levels. When playing Half-Life: Alyx, I used the 180W Framework charger (holy crap, it gets toasty), and turned the power profile up to performance mode in the hopes of getting as much performance as possible. If memory serves, I only stopped playing due to a low battery warning, though I didn’t have it fully charged when I started. I think the battery didn’t last as long as usual, though I really wasn’t paying that close of attention to it.

  • My experience with VR before this was Google Cardboard/Daydream, PSVR, and PSVR2. While I’d very much like the full features of the PSVR2 (eyetracking, foveated rendering, improved haptics in both the controllers and headset, and especially HDR support), the current level of support doesn’t disappoint me. Apart from the mura, which was somehow more noticeable to me on PC vs PS5. Not deal breaking, but, sadly, more noticeable.

1 Like

Beware that USB-A ports have lower power limits that USB-C.

Edit: But there are cables which expose power leads from USB-C plug

1 Like

When you played Halflife Alyx with the PSVR2 adapter plugged into the DP adapter on the side of your FW16 did you open Task Manager to see which GPU the game was running on? You can right click on any column header under Processes and enable the column GPU engine and it will show which GPU it’s running on.

With all of the testing I conducted with the PSVR2 plugged into the DP module on the side of the FW16 it would always run the game on the iGPU which would be laggy and slow and never achieve the full framerate of the headset or it would give me an error saying “You must plug the headset into the GPU that the game is running on” when Windows would select the dGPU as the target when running more intense games. For instance if I ran Beat Saber by default then everything worked fine but the framerate just wasn’t great and it would have little hiccups and microstutters. However, if I ran something like Microsoft Flight Sim 2020 in VR mode or HalfLife Alyx it would run it on the dGPU when Windows was configured to pick the GPU automatically depending on the game and then I would just see “Loading” through the VR headset in the Steam menu area while the game would be up and playing in the preview on the laptop screen and the error would be showing saying the headset needs to be plugged into the GPU that it’s running on.

If it’s not too much trouble, could you post a screen shot of your Task Manager showing the GPU engine column with Half-Life Alyx process showing so I can see which GPU Windows claims the game is running on. Also, if you have Beat Saber can you try booting that up and see if you get the strange error I was getting where SteamVR says “You must plug into the primary GPU” since it should default to iGPU for that game untill you go into Windows settings and force it to the dGPU.

Example of forcing the GPU the game runs on in Windows when 2 GPU’s present

Because ideally, I would absolutely love to run my PSVR2 adapter using the DP port on the side of the FW16 so I don’t need the USB-C to DP cable at all. But, I spent days trying everything I could possibly think of and I could never get a game running on the dGPU to show up in the VR headset that was plugged into the DP module on the side of the FW16 which links to the iGPU. It would only show games in the headset that were running on the much slower iGPU and if the game went to the dGPU because Windows detected it was more demanding than it would just who the SteamVR hub in the headset with “Loading [Game]” showing on the screen even though the game was already loaded and working in the SteamVR preview window showing on the laptop.

So technically you can use SteamVR with DP module on side of the FW16 for PSVR2 experience so long as the game you’re running defaults to the iGPU because the laptop isn’t plugged in or is in a low power profile setting while plugged in or you force the game to the iGPU using the System>Display>Graphics menu in Windows 11. But, if @takaides actually got a VR game running on the dGPU and displaying through the DP module on the side of the FW16 I would very much like to try and replicate that experience so that USB-C to DP cable is no longer needed hanging off the back of the laptop.

I laughed when I read you talking about how you lost track of time playing Halflife Alyx. Yes, you absolutely lose track of time until either you wife, girlfriend or loss of power pulls you out of the game. It’s absolutely additive and I honestly hope they make another one in the future because it still stands today as one of the best and most immersive VR experiences I’ve ever had. The fact you were able to run it makes me think it had to be on the dGPU since i don’t think the iGPU would be able to play it at any acceptable framerate even on the lowest graphics settings but I haven’t tried myself so I’m not really sure. The onboard iGPU is pretty capable for 3D graphics being able to almost play Beat Saber at ~70FPS with default graphics settings and it also handles RecRoom no problem.

As for the low power problem you were encountering, I have also noticed a few interesting things myself. Like for instance when I plug in the 180 watt power adapter into the FW16 and torture the CPU/dGPU using http://iprep.info/gpu it will always show 100% power remaining down in the Windows 11 task tray until I unplug the USB-C power adapter and then it will update to show the true percentage remaining. I found that when the CPU/dGPU is being fully hit 100% it drains the battery at about 5% every 15-30 minutes which isn’t bad and would give you quite a bit of runtime if you start from 100% before you do whatever it is you’re doing but it does mean that the laptop will die no matter what you do if you run at 100% for a prolonged period of time. I think they are coming out with a 240 watt power adapter soon that will resolve this problem by providing enough power that the battery doesn’t need to be touched. I also wonder if the 100% issue I see in Windows 11 has to do with Microsoft making a bad assumption that the battery can also be depleted while plugged into a wall so it just shows 100% and never updates from the battery status again until the charge state changes. But I’m curious if you’ve also observed this issue yourself?

And last but not least I wonder if the mura issue you were noticing with the PSVR2 had to possibly do with the games running on the iGPU instead of the dGPU which would disable a lot of the features the dGPU has to increase image quality. Because when running on the dGPU I got way better image quality vs. iGPU just with default graphics settings in every game I tried.

TL;DR - Could you run Half-Life Alyx with PSVR2 plugged into DP on side of laptop via DP module and check the GPU engine column under Task manager for the Half-Life Alyx process and then do it again with the USB-C to DP cable coming out of the back USB-C connector on the FW16 laptop? I want to verify that you’re seeing dGPU in the GPU engine column for both configurations. Also, if you use System>Display>Graphics in Windows 11 to force Half-Life Alyx to the iGPU will it show up in the headset when you run the game while connect to the USB-C port on the back of the laptop and vice versa when plugged into the DP on the side of the laptop with Half-Life Alyx forced to dGPU? If you’re able to confirm that you’re able to see both iGPU and dGPU games through either USB-C on back or DP on the side of the laptop in the headset then I’ve gotta figure out how in the heck you’re hardware configuration is different from mine so I can replicate your same results since I would love to ditch the USB-C to DP cable if I can. :+1:

I looked at the cables that you linked too, and it looks like they just put out 5V at 3A which is the same power a USB-A port puts out. I think this is just the default voltage that any USB-C port sends out to start the negotiation with the device and it will only send more power upon request from the device itself.

Cable from Amazon that can only send 5V at 3A

I think for takaides idea to work they would need to pull a lot more power than that which would require a handshake with the USB-C controller to request more power. I found this cable over on AdaFruit that looks like it has a programable chip inside that can be programmed with an included programmer unit to send any voltage up to 20V at 2A giving a total power of 40 watts available. I don’t know if that is enough for the PSVR2 headset off the top of my head but I’m sure if this cable exists there are others out there that supporter higher power output. But this cable could easily be housed in a 3D printed module that could just slide into the side of the framework directly into the nested USB-C port in the back after it’s been programmed for the correct voltage to the barrel jack. And you could easily buy a barrel jack converter to get it to the right size and polarity for the PSVR2 box. Honestly, this would be a super cool module that people would actually use if @takaides makes it!

Re-programmable USB Type-C PD to 2.1/5.5mm Barrel Jack (LINK)

If you end up making one of these @takaides and it works let me know. I’d like to use something like this myself. It would be fun to play Beat Saber out in the front yard on a nice day fully unplugged! :wink:

When you played Halflife Alyx with the PSVR2 adapter plugged into the DP adapter on the side of your FW16 did you open Task Manager to see which GPU the game was running on?

Apologies if I was unclear, but I also used the port on the back of the laptop, not the side. I did pull the DisplayPort adapter from the side of the laptop, but only used it in the back dGPU port. I do happen to generally always run task manager, but I was distracted by VR and never checked the task manager during VR use.

Well, they want to power the PSVR PC adapter, which they said themselves requires rather 5V 3A:


Their idea, as I read it, is to have a way to power the PSVR PC adapter from the laptop, i.e. to not require an external power brick, but rather have a solution which just plugs into the laptop fully. Or at least that’s what I would do. So this is where we stop being able to rely on any USB Power Delivery, as the laptop can output only 5 volts, no power delivery negotiation possible.

And my point with proposing a USB-C cord was that they mentioned not wanting to solder tiny USB-C headers.

The cord makes the soldering work much less involved.

and also that power delivery through a USB-A expansion card is limited by the card, so it might not output enough power:

thusly starting with USB-C for that project is much preferred.

I’m actually shocked that the PSRV2 adapter needs that little power. It really is starting to make me wonder why in the hell the headset can’t take power directly from the USB-C port and not need the adapter at all?! :man_shrugging:

I think, it just comes down to user experience: USB ports are rarely rated for power officially, and it wouldn’t be nice for people to plug the headset into a USB port only to get it shutting down at points because the port can’t supply enough power.

I’m using external SSDs which get their power from a USB port they’re plugged into, and it’s a pretty frustrating experience to see the drive reboot in the middle of heavy usage because the port I’m plugging it into couldn’t handle the drive’s power draw.

1 Like

I assume that’s the main issue.

Also, if I really wanted to muck around with the circuit, I’d love to have USB-PD passthrough, so I’d plug the power adapter for the laptop into the PSVR2 adapter (in an appropriately labeled PD-IN USB-C port), grab ~15-18W off of that, and send the rest to the laptop through the currently existing USB-C cable tail.

That won’t work with the Framework 16, assuming the user wants to plug the PSVR2 adapter into the dGPU; it can’t do any power in, let alone PD-IN. And honestly, adding a PD controller/power circuit seems like a lot of effort if the whole point is simplifying it… Though, I’m now curious if there’s any data pins to spare on the FW 16 interposer.

2 Likes

I wonder if this problem was solved on the Framework 16 because I haven’t had a problem with powering any USB devices including old external laptop spinning disks which suck quite a bit of power. Obviously, I can’t power the PSVR2 but that’s not because the port can’t supply enough power but rather because the way PSVR2 draws power from a USB-C port is no longer supported by Nvidia after the 20xx series cards, I forget what the technology was called. It’s too bad too because it was a great idea to just power external GPU’s, VR Headsets and even screens directly through USB-C since it supports up to 240watts of power which is more than enough for all these things. Well, except for like super high-end GPU’s obviously).

I do know that the module ports on the Framework 16 do have some limitations like the HDMI and DP out modules only work on the back 2 ports on either side and the front most ports only support the lower bandwidth/power modules as I understand it. Like for instance if you plug the DP module into the front most slot it won’t work when you plug in a Display and try to activate it. However, you can move the USB-A module to the front most port and it works just the same as the back most port since it uses less bandwidth. I wonder if this has something to do with available PCIe lanes and how they physically split them up between the module slots. I also know that only the back most slot on either side can be used to charge the laptop via USB-C using the 180-watt brick that comes with it. Each slot also has a little amber charging LED next to it. However, you can remove the USB-C module from either side and replace it temporarily with a SD card reader or video out and it works fine while the laptop is on battery so I’m not quite sure why these limitations exist exactly so if someone knows I’d love to know the official reason to avoid confusion in the future.

Also, the USB-C on the DGPU doesn’t work for anything but external displays or VD headset with adapter. Anything else you plugin to it won’t even receive power like a mouse or controller, etc. But that is to be expected since it’s just a thunderbolt port specifically for display output as I understand it and nothing else which is a bit confusing since most people will just assume it’s another USB-C port that anything that fits can plugin and work with.

I will say this though; after looking at the problems people have experienced with the Framework 13 laptops, I have to say that Framework did a great job addressing and solving most of the issues on the Framework 16. This rig has been absolutely solid, and I love it more than any other laptop I’ve ever owned, and I’ve had some amazing laptops. I was most surprised by how solid it feels. Many people complained about the early Framework 13’s being flimsy, however this Framework 16 is as solid as it could possibly be and I feel like I could beat someone to death with it if I had to in order to save my life! Despite knowing it would probably void the warranty. :rofl:

Sorry, I’ve drifted way off topic here with my post because of my pain medication. If someone does manage to create a USB-C module for the Framework laptop that allows for a USB-C connection of the PSVR2 directly to the laptop without adapter or external power that would be freaking awesome and I would obviously buy one! However, if I have to continue to use the breakout adapter box, so be it. It’s not like I would be playing VR untethered on battery anyways since the VR graphics alone would suck the battery dry faster than a first-generation Sega Game Gear and the framerate would be horrible! :rofl:

Check out this article from Framework on what each port can do!

It says that FL16 can supply full 15W to the first device on ports 1,2,4,5 if it asks for it over USB-C. Then other devices receive 7.5W on those ports. While ports 3 and 6 are always 4.5W. While I also heard that USB-A expansion card lowers the maximum proportionally for some reason.

According to the same article, the display output is supported only on three ports - two on the left and one on the right. They probably had some reason to do it this way, which is most likely resource allocation, like you couldn’t wire more than 3 controllers for display port, and the ports are all wired to different controllers.

Yep, this, yeah

From the same article, and from personal experience, you can use two back-most ports on either side for charging, it’s always at full speed with the 180W brick. Both ports on one side share the LED for status.

Framework has also this nice behavior where if you plug in 100W charger (e.g. through a dock), it’ll take that one, but then if you plug in a 180W charger, for example while you want to game, the laptop will seamlessly switch to the higher-power adapter without renegotiating with the dock. This was always frustrating on other laptops because renegotiation would lead to the full dock reset, so all the monitors and peripherals disconnect momentarily. Then when you unplug the 180W charger, it would seamlessly switch back to 100W from the dock.

Hm, just tested it and I was able to charge my phone from that port. Your dGPU might be bugged if it doesn’t supply power, as power supply is in the USB spec and cannot be optional.

1 Like

You were absolutely right, I grabbed another USB-C to USB-C cable and the rear DGPU USB-C port charged the phone perfectly. I must have had a bad cable, but the odd thing is the cable works if I plug it into the side of the laptop. It must be like one pin that isn’t aligning right on the rear port or something funny like that. I think I’ll just toss the cable so I don’t run into something like this again.

1 Like

the way PSVR2 draws power from a USB-C port is no longer supported by Nvidia after the 20xx series cards, I forget what the technology was called.

I’ve been working on this myself. As far as I have read they’re using a modified version of VirtualLink but without the weird repurposing of pins that standard did that made the USBc port unsymmetric. I’ve been looking to find some form of USBc injector to allow me to inject 12v (possibly from the 12v USB PD Rev. 1.0 standard that seems to not be commonly supported for some reason) to the line to my PSVR2 so I can reduce failure and risk points to my FW16 in a backpack based rig. Everything I’ve seen so far gives me the impression that if the USBc ports on the framework supported 12v output it would work connected directly without a dongle (though there’s a high probability I’ve misunderstood something).

I understand that this is probably not a major priority, but it’d be really nice if there was some reletivly low difficulty way for the hardware guys to make this easy for us.

Edit: To clarify my thinking on why I think it’s just USB PD rev. 1 support that would enable this, I look to the dates of the standard and hardware releases.

  • PD Rev. 1 was released back in 2012, it contained +12v in the standard.

  • The 20xx series cards (all with VirtualLink capable USBc ports that must deliver +12v) were released in 2018 and likely would have had their interfaces baselined during that PD revision’s lifespan.

  • The 20xx series seem to be mostly if not fully compatible with the USB 3.x standards of the time, PD revision 2.0 came out in 2014 but even as of 2017 the docs allow for additional voltage profiles.

  • AMD even incorporated VirtualLink compatibility into their 6000 series cards, announced in 2020, but…

  • As of the end of 2020 and the release of the 30xx series cards, VirtualLink seems to have been discontinued entirely

  • Announced in 2023 the PSVR2 supposedly spent 6 years in development, this would have put the decision point on it’s major features firmly into the time period of VirtualLink support, though during it’s development the dropping of that support would have become more and more obvious.

  • Despite this deviation, the PSVR2 is still fully functional, with no adapter, on 20xx series cards that came with VirtualLink compatibility.

The Drop of VirtualLink could explain the abandonment of strict adherence to the standard, and the shift in playstation’s posture from being supportive of the PC and VR market to being apathetic. When they began working on this hardware it seemed as though all major graphics cards would have supported the hardware directly, without an adapter, as long as they used a USBc connector and the associated standards. As of half way through development it seems as though NVIDIA unilaterally (and possibly without prior communication, or at least quite last minute communication) dropped support for VirtualLink fully.

All that said, the PSVR2 still works with the 20xx cards so it must still…

Actually, I’m dumb, I could just look this up directly…

Found it. Yeah, according to a 3rd party VR driver dev who’s working with it the PSVR2 is looking for +12V USB PD, USB3.0 compatibility carrying a DisplayPort 1.4 signal with HDCP and DSC support, a combination that only existed on PC in the VirtualLink standard because of the awkward straddling of standards versions it does, and then only because newer PD standards dropped +12v. If support for that PD1.0 standard can be added to the FW16, it seems the PSVR2 would be compatible directly with no extra cables or dongles. It would be neat if that could be done in firmware. But if not even just an expansion card, or inline dongle to down-convert PD+15v to PD+12v without messing up the DP signalling would allow using the PSVR2 with a single connection.

See my earlier reply to you for an answer to this, I’ve been going down the rabbit-hole.