glpi-project / glpi-agent

GLPI Agent
GNU General Public License v2.0
212 stars 51 forks source link

Wrong monitor serial number (Philips PHL 241B8Q) #641

Open jackburton79 opened 2 months ago

jackburton79 commented 2 months ago

Bug reporting acknowledgment

Yes, I read it

Professional support

Yes, I know

Describe the bug

We've migrated from importing computers from OCSInventory to a GLPI-Agent based solutions. It seems some monitor serial numbers aren't read correctly. Example: We have various philips PHL 241B8Q displays: their serial number is incorrect:

Correct: ZV01903000300 Reported by GLPI: 000300

Correct: AU01901000160 Reported by GLPI: 000160

We're using GLPI 1.7.3 on windows 10 / 11 Those monitors report their serial number correctly via edid in Linux.

To reproduce

Send an inventory using the agent and one of these displays

Expected behavior

The serial numbers should be correct

Operating system

Windows

GLPI Agent version

1.7.3

GLPI version

10.0.14

GLPIInventory plugin or other plugin version

No response

Additional context

No response

g-bougard commented 2 months ago

Hi @jackburton79

can you generate a local inventory for monitors with the following command run in an Administrator console and from the agent installation folder ?

glpi-inventory --partial monitor

Than share the "monitors" output part like:

...
      "monitors": [
         {
            "base64": "AP///////wAmzRh2NDU0MDMgAQS1Rid4P3Z1p1RQmyYSUFS/7wDRwIGAMWg...GHE4LUBYLEUAuYghAAAeAAAAAAAAAAAAAAAAAAAAKA==",
            "caption": "PL3266Q",
            "description": "51/2022",
            "manufacturer": "Iiyama North America",
            "serial": "30343534"
         }
      ],
...

I need the full "base64" content which is indeed the monitor edid block encoded in base64, and maybe you'll see an "altserial" with the expected serial. If that "altserial" is still the expected one, I'll be able to tell agent how analyze the edid to better use altserial as serial.

jackburton79 commented 2 months ago

Hi, of course I can. Will do tomorrow. Thanks for looking into this!

jackburton79 commented 2 months ago

This is the result of glpi-inventory --partial monitor:

  "monitors": [
     {
        "altserial": "0000011e",
        "base64": "AP///////wBBDCkJHgEAAAMdAQSlNR54O6YxqFVRnSUPUFS/7wDRwLMAlQCBgIFAgcABAQEBAjqAGHE4LUBYLEUADyghAAAeKkSAoHA4J0AwIDUADyghAAAaAAAA/ABQSEwgMjQxQjhRCiAgAAAA/QAwTFVVEgEKICAgICAgAQY=",
        "caption": "PHL 241B8Q",
        "description": "3/2019",
        "manufacturer": "Philips Consumer Electronics Company",
        "serial": "000286"

The serial of this monitor is ZV01903000286. For reference, from a linux machine with a similar display, my unofficial inventory agent (which use this edid code https://git.linuxtv.org/edid-decode.git/ ) gets the correct serial number.

g-bougard commented 2 months ago

When using edid-decode, it only reports me "286" as serialnumber from this EDID block. I know Philips EDID blocks may be wrong or not fully expose all possible data from a monitor connected via HDMI.

Can you confirm if the monitor is connected via HDMI ? If yes, can you eventually try to connect using something else than hdmi and see if you obtain the expected serialnumber. If you have the expected serial when not using hdmi, this means this monitor model has a wrong hdmi support and you should report that problem to the manufacturer.

Interestingly, glpi-agent is reporting the last digits from the serialnumber. Also "ZV01903" seems to be related to the month and year of that model, here 03/2019.

From the GLPI point of view, if you register manually monitors with the full serialnumber and expect them to be linked as expected after an inventory import, you can use an option which has been added to handle exactly that kind of problem. The option is named "Import monitor on serial partial match" ("Importer un moniteur avec une correspondance partielle du numéro de série" in french). This option is a checkbox in Administration > Inventory > General configuration. So if you concern is to avoid double entries for this kind of monitor, you just have to enable this option.

jackburton79 commented 2 months ago

Tomorrow I'll check how these displays are connected

jackburton79 commented 2 months ago

When using edid-decode, it only reports me "286" as serialnumber from this EDID block. I know Philips EDID blocks may be wrong or not fully expose all possible data from a monitor connected via HDMI.

Can you confirm if the monitor is connected via HDMI ? If yes, can you eventually try to connect using something else than hdmi and see if you obtain the expected serialnumber. If you have the expected serial when not using hdmi, this means this monitor model has a wrong hdmi support and you should report that problem to the manufacturer.

I checked, and these displays are connected via Displayport.

Interestingly, glpi-agent is reporting the last digits from the serialnumber. Also "ZV01903" seems to be related to the month and year of that model, here 03/2019.

From the GLPI point of view, if you register manually monitors with the full serialnumber and expect them to be linked as expected after an inventory import, you can use an option which has been added to handle exactly that kind of problem. The option is named "Import monitor on serial partial match" ("Importer un moniteur avec une correspondance partielle du numéro de série" in french). This option is a checkbox in Administration > Inventory > General configuration. So if you concern is to avoid double entries for this kind of monitor, you just have to enable this option.

Thanks. It's exactly that scenario.

g-bougard commented 1 month ago

Hi @jackburton79

did you try the "Import monitor on serial partial match" option in GLPI ? And did this fix your issue in GLPI ?

If that doesn't I can try to find a way to guess the expected serial with more analysis in the Philips monitor case. But for that I need also the EDID block via the partial json inventort for the 2 other cases you reported in the description, the one for ZV01903000300 serial & the one for AU01901000160 serial. Indeed I need to guess the prefix to set and it seems 2 numbers are related to week and year of production, but I don't know the first parts ZV & AU. Analysing their EDID block can give some clues.

Another question, you said the serial reported are correct via edid-decode on linux but do you know if they are connected differently in that case ? Can you eventually report the edid-decode output for all models with a correct serialnumber on linux ?

jackburton79 commented 1 month ago

Hi, We tried the partial serial number match and that worked. Tomorrow I can try to retrieve the other info you asked. Thanks!

keguira commented 2 weeks ago

Indeed I need to guess the prefix to set and it seems 2 numbers are related to week and year of production, but I don't know the first parts ZV & AU. Analysing their EDID block can give some clues.

For screen, back to 2010, the first 2 letters corresponded to the factory location or a specific factory (if there are multiple factories in the same country). Can't find any recent article explaining this but it should not have changed a lot.

Edit: well found a source from this time (in french) -> https://www.lesnumeriques.com/tv-video/decoder-numero-serie-ecrans-philips-n8787.html The serial number had more (or different) informations at this time

g-bougard commented 2 weeks ago

Hi @keguira

thank you for the sharing, but this indeed doesn't help as this explains how to understand the serialnumber found on the box. Agent can only get datas from EDID blocks. If the prefix is related to a manufacturer plant but Philips doesn't provide any helping data to guess it in EDID block, we still can do nothing. In such case, only the match on partial serialnumber can help.