New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
synaptics-mst: Do not allow updating a device with no customer ID #2923
Conversation
This is typically when the OEM is using the reference hardware design. Prevent updates, as there might be a new bug introduced in the reference firmware that only manifests on one OEM's product. It's up to the OEM to do the testing and validation. We need something to tie it back to a physical device model if it's using a reference firmware and we want to update it.
@joevt would it be possible for you to retest with this branch to see if it's sufficient (and/or master if it's merged before you get to test). |
I tried the new master.
One of the build instructions is like this:
It looks like the instructions want me to enter
I did the following:
I followed the next instructions
but I don't know how to determine if my system needs that. Then I did
The version of the client for fwupdtool and fwupdmgr is newer but the version of the daemon doesn't change until a restart. Next, I tested the commands. Today I received a firmware update file from Delock tech support for my Delock 87737 (but they wouldn't give me an updater).
For each command, there's a 25 second delay before this message:
I select the new
and the following for HP:
I'm not sure if the indenting makes sense. Is there no way to parse other info from the firmware file such as chip id or version? Then I tried this:
The HP has info like before in #1665 I disconnected the HP so now I just have Intel -> CalDigit -> Delock. Now I see the info the for CalDigit and not for the Delock (because it's ignored like before). The CalDigit has info like before. I see a new message Then I disconnected the CalDigit and I just have the Delock connected. The Delock has info like before. I see a new message I also tried the |
I made a modification to make it clearer, but it's a wiki please change it if you think it's still unclear as an outsider.
@hughsie this looks like a problem with the new bluez backend. Any thoughts on it?
Yeah I think it's possible to add parsing for some of those other things and probably a good idea.
I think that the fix we're putting into 1.5.8 (the release after the next release coming out) I'd anticipate this will be resolved by #2919
I think we have a bug with the bluez backend as mentioned above, hopefully should sort it before 1.5.7 release. |
I've disabled it by default in #2928 -- it's a bit too risky to have for a bugfix release. I did try to reproduce by disabling the bluez service and by setting the service name to xxx.bluez but it failed gracefully. I assume the bluez service is trying to start but gets stuck at coldplug.
If you can get the offsets from Synaptics then sounds like a plan. |
Here's the version offset: https://github.com/fwupd/fwupd/blob/master/plugins/dell-dock/dell-dock.quirk#L96 but it looks like the board ID offset isn't publicly documented. |
I checked and we'll need Synaptics to comment on how to find the offset for chip ID if we're going to do this. The offsets for version string are different between tesla, leaf and panamera so it can't be hardcoded in the parser unless the parser can determine the targeted chip ID. |
If we can get the chip ID from the firmware blob then I think it makes a lot of sense. |
I would expect it can be obtained form the blob, but there isn't any documentation or code that indicates where the offset is for it. |
Maybe the chip ID is a hardware thing that cannot be changed with firmware? I couldn't find it in the firmwares I have (by searching for bytes that might represent 5333 in the HP firmware and 5330 in the Delock firmware). Well, one way to find out if the chip ID is in the firmware is to flash the 5333 firmware on the 5330 chip and seeing if the chip ID changes (I might do that if my Delock continues to not work - I'll first try to get the original firmware I had from Delock). I did notice that the firmwares are both 512K, the first 128K is duplicated in the next 128K except the first and last byte of the last 16 bytes (the first of those bytes is 00 in the first 128K and 01 in the next), and the first 128 bytes is an EDID with Synaptics as the vendor (EDID from HP and Delock firmwares are identical). The version (3 bytes) is in the first 128K at two locations (0x6D5 and 0x18400), and therefore in the next 128K in the same two locations. The board ID (2 bytes) is in the first 128K at 0x10E and in the next 128K at the same location. The next/second/last 256K is identical between the HP and Delock firmwares. I suppose a sample of two firmwares is not enough to say that the location of the board ID won't change. UPDATE: I received from Delock a new version (5.04.135) of the firmware for my Delock 87737 MST Hub. I was able to apply it using |
True - that's entirely possible that it's read from some strapping during startup.
Yes, there are two banks on Panamera (5XXX) that you are seeing. When flashing firmware you'll swap between those first 128K and second 128K to flash and make active. The 3rd region is the ESM and is shared no matter which one you're booted into. |
This is typically when the OEM is using the reference hardware design.
Prevent updates, as there might be a new bug introduced in the reference
firmware that only manifests on one OEM's product. It's up to the OEM to do the
testing and validation.
We need something to tie it back to a physical device model if it's using a
reference firmware and we want to update it.
Type of pull request: