Disable HDMI UDOO Quad

Discussion in 'UDOO QUAD' started by bartkoek, Nov 17, 2018.

  1. bartkoek

    bartkoek New Member

    Joined:
    Jun 8, 2015
    Messages:
    4
    Likes Received:
    1
    Hi there!

    I just set up my UDOO using the minimal version of UDOObuntu v2.2.0. In the documentation, I see it is possible to disable HDMI and go headless using the web control panel or via the terminal: https://www.udoo.org/docs/Cookbook_Linux/Set_video_output.html

    When I try this it says:
    The parameter <screentype> can be: hdmi, lvds7, lvds15.

    Is it possible to disable HDMI, so I will have a lower energy consumption and more memory available?

    Thanks,
     
  2. waltervl

    waltervl UDOOer

    Joined:
    Dec 12, 2015
    Messages:
    2,314
    Likes Received:
    580
  3. fetcher

    fetcher Member

    Joined:
    Mar 9, 2014
    Messages:
    166
    Likes Received:
    20
    The newer 3.14.56 kernel, at least, appears to watch the HDMI hot-plug sensing pin, and automatically disables HDMI output when no monitor is connected. This should save a small amount of power from the HDMI serializer circuitry not having to run, and hopefully avoiding framebuffer raster readout from the DDR RAM as well, without having to reconfigure anything.

    I ran a quick and dirty memory bandwidth test (dd if=/dev/zero of=/rw/256M bs=1M count=256, averaging across 20 tries while throwing out anomalously-low outlier readings) from an Udoo with and without the HDMI output enabled, and did measure a small different of about 1MByte/s between when (236.5MB/s vs 237.6MB/s, possibly too little to be outside the statistical margin of error... individual runs were in the 235-241MB/s range). This was at a low resolution and color depth, also, only 720x400x16bpp - higher-res and 32bpp should increase the overhead from video output read cycles sharing system RAM.

    To disable the frame-buffer device permanently, you can always manually edit your device-tree file, e.g. /boot/dts/imx6q-udoo-hdmi.dtb or /boot/dts-overlay/imx6q-udoo-hdmi.dtb (check uEnv.txt for a line reading "use_custom_dtb=true" to see which one's active - if that line's present, it looks to dts-overlay first... or watch the initial boot process via serial console for a line reading Device-Tree:)

    Go to to whichever directory under boot is being used, edit the corresponding .dts file (imx6q-udoo-hdmi.dts instead of imx6q-udoo-hdmi.dtb) and change the "status" line within the "fb@0" block towards the very end (fb = framebuffer) from status = "okay" to status = "disabled". e.g.
    Code:
            fb@0 {
                    compatible = "fsl,mxc_sdc_fb";
                    disp_dev = "hdmi";
                    interface_pix_fmt = "RGB24";
                    mode_str = "720x400M@70";
                    default_bpp = <0x20>;
                    int_clk = <0x0>;
                    late_init = <0x0>;
                    status = "disabled";   // rather than "okay"
            };
    
    Then do
    Code:
    dtc -I dts -O dtb imx6q-udoo-hdmi.dts >imx6q-udoo-hdmi.dtb
    
    to rebuild the .dtb (binary) version of this file. I'd make backups of both the .dts and .dtb first (stored outside of /boot), just in case something gets messed up.

    This effectively disables the video console, but doesn't prevent 8 to 16MB of RAM from being allocated for it, if you check the discrepancy in "free" between the amount shown (1031988 for me) vs. 1024*1024=1048576 for a full 1GB. I think this is due to the frame buffer being initialized within the U-Boot bootloader -- this is when the full-screen UDOO logo appears, at a hardcoded 1024x768 resolution -- before the kernel if even loaded, or has a chance to read your .dtb device tree.

    It should be possible to deactivate framebuffer initialization within U-Boot to recover that memory, but I haven't yet discovered how.
     
    waltervl likes this.
  4. fetcher

    fetcher Member

    Joined:
    Mar 9, 2014
    Messages:
    166
    Likes Received:
    20
    I forgot to mention that in the 'dd' memory-bandwidth test above, of course /rw is mounted as a ramdisk (tmpfs).
     

Share This Page