OcuLink Expansion Bay Module

a bit of situation update.
the board works to some extent. it can successfully connect the card to fw16. it got recognized by windows. and it can be detected by gpuz as x8 lane. however the card won’t work. it has a error 43 next to it and error43 fixed doesn’t work here. still working on why tho.

1 Like

another very strange thing is. the fan is not working. even tho everything is connected but the fan is not spinning…

1 Like

I am starting to worry that I need a customed version of the bios to fix it…

I saw that both the dGPU and M.2 expansions have an EEPROM. It might be related to a configuration in the EEPROM? I was looking at the EEPROM a while ago to maybe modify a M.2 expansion card (not the card itself, but the EC firmware on the laptop) so it runs at 8 lane instead of bifurcated 4x2 lanes.

Forgot to include the EC source code file. I have found that it reads the EEPROM from here EmbeddedController/zephyr/program/framework/lotus/src/gpu_configuration.c at c25dec40f4ba31972b133fb04bca0a0c0e4ab0d1 · FrameworkComputer/EmbeddedController · GitHub

EDIT: This information is nowhere to be found except in the EC source code or the M.2 expansion bay example on the github repo. I am still wondering why is it taking so long for the information on the expansion bay to be expanded so it is more clear. I guess framework has higher priorities than improving the documentation for DIY projects…

1 Like

You need an Eeprom for the Description of the Expansion Bay Module. There is an ExpansionbayConfigurationGenerator on the Framework Github

1 Like

Dang, I had no idea about that repo. I wanted to generate my own config or just modify the EC firmware to try to run the M.2 expansion bay in x8 mode. Unfortunately don’t currently have the m.2 board so I would have to get it to test if this could also work.

1 Like

In my 3 days (a very short time) trying it out, I haven’t noticed anything problematic, except for the touchpad spacers not being flush. I fixed that by slightly bending them in my hands. The only other issue is the WiFi card is slow to resume from hibernate, but every single PC that doesn’t have a high-end Intel WiFi card is usually comparably sh*t.

Edit: high-end Intel WiFi card means the Intel AX210, which can be found for $18 from Framework or from Amazon.

1 Like

I use the ax210 as an Intel Killer since i received my DIY Fw16. Never even bothered trying the Mediatek. #Offtopic :slight_smile:

I Love the Modularity with the Expansion Bay and the dGPU. If i need my Device on the Go i switch the dGPU in, when at home i keep the Dual SSD Expansion Bay with Oculink to use my eGPU.
But yes the FW16 still feels like the unwanted Child Looking to its Sibling with the Golden Spoon (13 )

2 Likes

With the 4-lane OcuLink through dual M.2 board, I need to follow the right power sequence for the card to be recognized in Windows. I also remember fiddling with error43 fixer a bit to get it working.

I would recommend you get the dual M.2 board and some M.2 to OcuLink 4i adapter (this is an illustration of a nice solution), get the GPU going through that and then move to your own solution. This way you eliminate software preparation as a factor for issues.

I already have a m2 to oculink working as daily driver. that is why I can confirm that neither it is about the PCIe board software and the GPU problem. still looking at the EC and stuff rn…

1 Like

Oh, I see! Sorry that I assumed you didn’t.

@Filip
If the EC reads the EEPROM and adjusts the 1x 8 lane vs 2x 4 lane, one could just as easily edit the EC source code and add an ectool command to get it to switch lane configuration.

The EC switches it between pcie gen4 and pcie gen3 when you remove the PSU, so I don’t see why the EC cannot switch between 1x 8 and 2x 4 while still powered.

1 Like

@Gu_tally Please DM me on discord. @crafty.foxxo.gay

I was planning on making my own board actually… and i already started. If we could collaborate on this that would be awsome, because i need to add some extra stuff for my usecase. I have the eeprom stuff down (basically you just have to write to it using the expansionbay tool and hook it up to i2c, use the same one that they have in the ssd layout on github)

I really do not want to route the PCIE stuff and everything if I can help it… I also know what the issue is with your error code 43, im pretty sure.

The fact that the MUX/DP_ALT is directly exposed is a BLESSING. I wonder if theres a way to inject an old dp signal in there and have the monitor display it. It would make for a killer portable monitor ontop of the already existing great laptop :slight_smile:

The 13 is just as neglected, it’s just a bit less quirky so needs a bit less attention XD.

I don’t know if you can just switch bifurcation while running. Would be interesting. Switching between pcie gens is a pretty normal thing to do so I am not sure if this is a good indicator.

1 Like

Regarding the EEPROM.

The EC source code contains a command that reads and write the expansion card EEPROM.
chromium/src/platform/ec/src/gpu_configuration.c:

It can currently handle only 2 different expansion cards:
a GPU one with 1x8 lanes
a SSD one with 2x4 lanes.

This is the ectool command that gets the pcie lanes info:
EC_CMD_GET_GPU_PCIE

So, I guess, all that needs to happen is program the oculink expansion EEPROM to look like a GPU with 1x8 lanes and it should then just work.

To do the programming, one needs the EC CCD interface as its currently only a host console command, and not an ectool command.

Im pretty sure you can only change expansion bay when the laptop is shut down.

The eeprom only gets read once, so in combination with that, it probably is only possible to switch when it is shutdown by reflashing the eeprom. Not completly horrible but I think making an easy tool to do it would be nice, or a button where you can switch between the two.

I wonder if 4x2 and 8x1 are also somehow possible. Could do some funny stuff with stacked m.2 ssds. 8x8tb in a laptop XD.

Conclusion is, we need an eeprom on an oculink 8i Module, which tells the EC the Expansion Bay is an dGPU.
Is there more within the Config? The Fancurve with the dGPU is tied to the GPU and the CPU, so its possible the CPU Fans also ramp with the eGPU, when used in such Way.

1 Like