BeagleBone Enhanced, loading EDID blob for HDMI?

I’m trying to connect my BeagleBone Enhanced Wi-Fi to my Vizio E55 tv using the HDMI.
I know it can be painful, but I have patience =)

It seems that the TV does not send an EDID or the board can’t read it because I see:

[   10.434908] tda998x 0-0070: read edid timeout
[   10.435360] tda998x 0-0070: failed to read EDID

in dmesg, and nothing on the screen whatsoever.

I tried to uncomment the cmdline with “video= …” in /boot/uEnv.txt which has the message about “edid real failures” (btw, I was a bit confused by that ‘real’…should it be ‘read’?), but nothing changed.

I then obtained the EDID binary blob by plugging my laptop to the tv, and I put it into /lib/firmware/edid/vizioedid.bin. I added “drm.edid_firmware=edid/vizioedid.bin” to the cmdline in /boot/uEnv.txt and tried rebooting. Still blank screen, and now I see the following in dmesg:

[   10.326019] platform HDMI-A-1: Direct firmware load for edid/vizioedid.bin failed with error -2
[   10.326183] [drm:drm_load_edid_firmware] *ERROR* Requesting EDID firmware "edid/vizioedid.bin" failed (err=-2)
[   10.434908] tda998x 0-0070: read edid timeout
[   10.435360] tda998x 0-0070: failed to read EDID
[   10.435925] platform HDMI-A-1: Direct firmware load for edid/vizioedid.bin failed with error -2
[   10.436069] [drm:drm_load_edid_firmware] *ERROR* Requesting EDID firmware "edid/vizioedid.bin" failed (err=-2)

but sometimes I also see the following later in dmesg:

[   49.327156] [drm] Got external EDID base block and 1 extension from "edid/vizioedid.bin" for conne
ctor "HDMI-A-1"
[   49.340765] [drm] Got external EDID base block and 1 extension from "edid/vizioedid.bin" for connector "HDMI-A-1"

These two messages are repeated throughout dmesg multiple times…but not at every boot! Sometimes they show up, sometimes they don’t and I can’t tell what makes them do that. In any case, still a blank screen.

Now, this weirdnesses aside, is the loading of an edid blob expected to at least work by editing the cmdline, even if it does not result in a working hdmi output?

Note that the edid blob seems to be fine, from what I can understand:

parse-edid gives:

Section "Monitor"
        Identifier "E550i-C2"
        ModelName "E550i-C2"
        VendorName "VIZ"
        # Monitor Manufactured week 10 of 2015
        # EDID version 1.3
        # Digital Display
        DisplaySize 930 520
        Gamma 2.20
        Option "DPMS" "false"
        Horizsync 30-70
        VertRefresh 50-75
        # Maximum pixel clock is 150MHz
        #Not giving standard mode: 1280x1024, 60Hz
        #Not giving standard mode: 1440x900, 60Hz
        #Not giving standard mode: 1680x1050, 60Hz

        #Extension block found. Parsing...
        Modeline        "Mode 17" +hsync -vsync 
        Modeline        "Mode 0" +hsync +vsync 
        Modeline        "Mode 1" -hsync +vsync 
        Modeline        "Mode 2" 27.027 720 736 798 858 480 489 495 525 -hsync -vsync
        Modeline        "Mode 3" 27.027 720 736 798 858 480 489 495 525 -hsync -vsync
        Modeline        "Mode 4" 74.250 1280 1390 1420 1650 720 725 730 750 +hsync +vsync
        Modeline        "Mode 5" 74.250 1920 2008 2052 2200 1080 1082 1087 1125 +hsync +vsync interlace
        Modeline        "Mode 6" 27.027 1440 1478 1602 1716 480 484 487 525 -hsync -vsync interlace
        Modeline        "Mode 7" 27.027 1440 1478 1602 1716 480 484 487 525 -hsync -vsync interlace
        Modeline        "Mode 8" 148.500 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync
        Modeline        "Mode 9" 74.250 1280 1720 1760 1980 720 725 730 750 +hsync +vsync
        Modeline        "Mode 10" 74.250 1920 2448 2492 2640 1080 1082 1089 1125 +hsync +vsync interlace
        Modeline        "Mode 11" 148.500 1920 2448 2492 2640 1080 1084 1089 1125 +hsync +vsync
        Modeline        "Mode 12" 74.250 1920 2558 2602 2750 1080 1084 1089 1125 +hsync +vsync
        Modeline        "Mode 13" 74.250 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync
        Modeline        "Mode 14" 25.200 640 656 752 800 480 490 492 525 -hsync -vsync
        Modeline        "Mode 15" 27.000 720 732 796 864 576 581 586 625 -hsync -vsync
        Modeline        "Mode 16" 27.000 720 732 796 864 576 581 586 625 -hsync -vsync
        Modeline        "Mode 18" +hsync +vsync interlace
        Modeline        "Mode 19" -hsync -vsync 
        Modeline        "Mode 20" +hsync +vsync 
        Option "PreferredMode" "Mode 17"
EndSection

and edid-decode gives:

edid-decode (hex):

00 ff ff ff ff ff ff 00 59 3a 04 10 01 01 01 01
0a 19 01 03 80 5d 34 78 0a e6 9d a3 54 4a 99 26
0f 47 4a a1 08 00 81 80 95 00 b3 00 01 01 01 01
01 01 01 01 01 01 02 3a 80 18 71 38 2d 40 58 2c
45 00 a2 08 32 00 00 1e 0e 1f 00 80 51 00 1e 30
40 80 37 00 dd 0c 11 00 00 1c 00 00 00 fd 00 32
4b 1e 46 0f 00 0a 20 20 20 20 20 20 00 00 00 fc
00 45 35 35 30 69 2d 43 32 0a 20 20 20 20 01 54
02 03 2c 71 4f 02 03 04 05 06 07 90 13 14 1f 20
22 01 11 12 26 09 07 07 15 07 50 83 01 00 00 6c
03 0c 00 30 00 38 2d c0 02 02 02 02 01 1d 00 72
51 d0 1e 20 6e 28 55 00 9a e6 10 00 00 1a 01 1d
80 18 71 1c 16 20 58 2c 25 00 9a e6 10 00 00 9e
8c 0a d0 8a 20 e0 2d 10 10 3a 96 00 9a e6 10 00
00 18 02 3a 80 18 71 38 2d 40 58 2c 45 00 9a e6
10 00 00 1e 00 00 00 00 00 00 00 00 00 00 00 c9

Block 0, Base EDID:
  EDID Structure Version & Revision: 1.3
  Vendor & Product Identification:
    Manufacturer: VIZ
    Model: 4100
    Serial Number: 16843009
    Made in: week 10 of 2015
  Basic Display Parameters & Features:
    Digital display
    Maximum image size: 93 cm x 52 cm
    Gamma: 2.20
    RGB color display
    First detailed timing is the preferred timing
  Color Characteristics:
    Red  : 0.6396, 0.3300
    Green: 0.2900, 0.5996
    Blue : 0.1503, 0.0595
    White: 0.2802, 0.2900
  Established Timings I & II:
    IBM     :   720x400    70.081663 Hz   9:5     31.467 kHz     28.320000 MHz
    DMT 0x04:   640x480    59.940476 Hz   4:3     31.469 kHz     25.175000 MHz
    DMT 0x09:   800x600    60.316541 Hz   4:3     37.879 kHz     40.000000 MHz
    DMT 0x10:  1024x768    60.003840 Hz   4:3     48.363 kHz     65.000000 MHz
  Standard Timings:
    DMT 0x23:  1280x1024   60.019740 Hz   5:4     63.981 kHz    108.000000 MHz
    DMT 0x2f:  1440x900    59.887445 Hz  16:10    55.935 kHz    106.500000 MHz
    DMT 0x3a:  1680x1050   59.954250 Hz  16:10    65.290 kHz    146.250000 MHz
  Detailed Timing Descriptors:
    DTD 1:  1920x1080   60.000000 Hz  16:9     67.500 kHz    148.500000 MHz (930 mm x 520 mm)
                 Hfront   88 Hsync  44 Hback  148 Hpol P
                 Vfront    4 Vsync   5 Vback   36 Vpol P
    DTD 2:  1280x768    59.870228 Hz   5:3     47.776 kHz     79.500000 MHz (477 mm x 268 mm)
                 Hfront   64 Hsync 128 Hback  192 Hpol N
                 Vfront    3 Vsync   7 Vback   20 Vpol P
    Display Range Limits:
      Monitor ranges (GTF): 50-75 Hz V, 30-70 kHz H, max dotclock 150 MHz
    Display Product Name: 'E550i-C2'
  Extension blocks: 1
Checksum: 0x54

Block 1, CTA-861 Extension Block:
  Revision: 3
  Basic audio support
  Supports YCbCr 4:4:4
  Supports YCbCr 4:2:2
  Native detailed modes: 1
  Video Data Block:
    VIC   2:   720x480    59.940060 Hz   4:3     31.469 kHz     27.000000 MHz
    VIC   3:   720x480    59.940060 Hz  16:9     31.469 kHz     27.000000 MHz
    VIC   4:  1280x720    60.000000 Hz  16:9     45.000 kHz     74.250000 MHz
    VIC   5:  1920x1080i  60.000000 Hz  16:9     33.750 kHz     74.250000 MHz
    VIC   6:  1440x480i   59.940060 Hz   4:3     15.734 kHz     27.000000 MHz
    VIC   7:  1440x480i   59.940060 Hz  16:9     15.734 kHz     27.000000 MHz
    VIC  16:  1920x1080   60.000000 Hz  16:9     67.500 kHz    148.500000 MHz (native)
    VIC  19:  1280x720    50.000000 Hz  16:9     37.500 kHz     74.250000 MHz
    VIC  20:  1920x1080i  50.000000 Hz  16:9     28.125 kHz     74.250000 MHz
    VIC  31:  1920x1080   50.000000 Hz  16:9     56.250 kHz    148.500000 MHz
    VIC  32:  1920x1080   24.000000 Hz  16:9     27.000 kHz     74.250000 MHz
    VIC  34:  1920x1080   30.000000 Hz  16:9     33.750 kHz     74.250000 MHz
    VIC   1:   640x480    59.940476 Hz   4:3     31.469 kHz     25.175000 MHz
    VIC  17:   720x576    50.000000 Hz   4:3     31.250 kHz     27.000000 MHz
    VIC  18:   720x576    50.000000 Hz  16:9     31.250 kHz     27.000000 MHz
  Audio Data Block:
    Linear PCM:
      Max channels: 2
      Supported sample rates (kHz): 48 44.1 32
      Supported sample sizes (bits): 24 20 16
    AC-3:
      Max channels: 6
      Supported sample rates (kHz): 48 44.1 32
      Maximum bit rate: 640 kb/s
  Speaker Allocation Data Block:
    FL/FR - Front Left/Right
  Vendor-Specific Data Block (HDMI), OUI 00-0C-03:
    Source physical address: 3.0.0.0
    DC_36bit
    DC_30bit
    DC_Y444
    Maximum TMDS clock: 225 MHz
    Video latency: 5 ms
    Audio latency: 5 ms
    Interlaced video latency: 5 ms
    Interlaced audio latency: 5 ms
  Detailed Timing Descriptors:
    DTD 3:  1280x720    60.000000 Hz  16:9     45.000 kHz     74.250000 MHz (410 mm x 230 mm)
                 Hfront  110 Hsync  40 Hback  220 Hpol P
                 Vfront    5 Vsync   5 Vback   20 Vpol N
    DTD 4:  1920x1080i  60.000000 Hz  16:9     33.750 kHz     74.250000 MHz (410 mm x 230 mm)
                 Hfront   88 Hsync  44 Hback  148 Hpol P
                 Vfront    2 Vsync   5 Vback   15 Vpol P Vfront +0.5 Odd Field
                 Vfront    2 Vsync   5 Vback   15 Vpol P Vback  +0.5 Even Field
    DTD 5:   720x480    59.940060 Hz   3:2     31.469 kHz     27.000000 MHz (410 mm x 230 mm)
                 Hfront   16 Hsync  58 Hback   64 Hpol N
                 Vfront    9 Vsync   6 Vback   30 Vpol N
    DTD 6:  1920x1080   60.000000 Hz  16:9     67.500 kHz    148.500000 MHz (410 mm x 230 mm)
                 Hfront   88 Hsync  44 Hback  148 Hpol P
                 Vfront    4 Vsync   5 Vback   36 Vpol P
Checksum: 0xc9

Turns out, I just forgot to recompile the initrd while ensuring that it includes the blob, so I created a initramfs hook to do it. I have 1080p with sound through hdmi working right now.