Re: Extremely long delay between CEC image-view-on an standby.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Apr 1, 2023 at 3:17 AM Hans Verkuil <hverkuil@xxxxxxxxx> wrote:
>
> On 31/03/2023 22:23, Shawn Lindberg wrote:
> > On Wed, Mar 29, 2023 at 2:56 PM Shawn Lindberg <shawn.lindberg@xxxxxxxxx> wrote:
> >>
> >> On Tue, Mar 28, 2023 at 2:58 AM Hans Verkuil <hverkuil@xxxxxxxxx> wrote:
> >>>
> >>>> cec-ctl -d0 --tv --cec-version-1.4
> >>>
> >>> That's wrong, the RPi is a Playback device, not a TV. So use --playback instead.
> >>>
> >>> You should also add this line to the config.txt:
> >>>
> >>> hdmi_ignore_cec=1
> >>>
> >>> otherwise the RPi's firmware tries to process CEC messages as well.
> >>
> >> Oh, I thought that the TV/playback command was indicating what sort of
> >> device the connected device is. This wasn't clear from the man page,
> >> either. Thank you for that. I made the change to config.txt and
> >> strangely when the RPi rebooted (I have it set to do this
> >> automatically once a day) the projector automatically turned on. I
> >> have never experienced this before.
> >
> > Further update on this. I continue to see the projector automatically
> > power on every time the RPi does its daily reboot, so I think I may
> > have to remove the hdmi_ignore_cec from the config.txt. Especially
> > since I can't figure out how to reliably shut the projector back off
> > again.
>
> From what I can tell, the Raspberry Pi doesn't transmit anything over CEC
> at boot time, regardless of whether hdmi_ignore_cec is present or not.
> That's with a Raspberry Pi 4B. It might be different for an RPi 3.

That is strange. I am also using a Raspberry Pi 4B. I do have the
following changes to my config.txt:

# uncomment if hdmi display is not detected and composite is being output
hdmi_force_hotplug=1

# uncomment to force a specific HDMI mode (this will force VGA)
hdmi_group=1
hdmi_mode=16

# Additional line added to prevent firmware from processing CEC messages.
hdmi_ignore_cec=1


> >>>> During this time, if I try to poll the projector, it will succeed.
> >>>> However, if I monitor events, after a significant amount of time
> >>>> (appears to be greater than 20 minutes, although this is difficult to
> >>>> verify because of how long it takes) I go will eventually see the
> >>>> following:
> >>>>
> >>>> Event: State Change: PA: 1.0.0.0, LA mask: 0x0000, Conn Info: yes
> >>>>     Timestamp: 30981.428s
> >>>
> >>> Now it appears to be able to read the EDID again and it has a valid
> >>> physical address.
> >>>
> >>>> Transmitted by Specific to Specific (14 to 14): POLL
> >>>>     Tx, Not Acknowledged (4), Max Retries
> >>>>     Sequence: 21 Tx Timestamp: 30981.561s Tx, Not Acknowledged (4), Max Retries
> >>>>
> >>>> Event: State Change: PA: 1.0.0.0, LA mask: 0x4000, Conn Info: yes
> >>>>     Timestamp: 30981.561s
> >>>> Transmitted by Specific to all (14 to 15): REPORT_PHYSICAL_ADDR (0x84):
> >>>>     phys-addr: 1.0.0.0
> >>>>     prim-devtype: tv (0x00)
> >>>>     Sequence: 22 Tx Timestamp: 30981.696s
> >>>> Transmitted by Specific to all (14 to 15): DEVICE_VENDOR_ID (0x87):
> >>>>     vendor-id: 3075 (0x00000c03)
> >>>>     Sequence: 23 Tx Timestamp: 30981.835s
> >>>> Received from TV to Specific (0 to 14): FEATURE_ABORT (0x00):
> >>>>     abort-msg: 132 (0x84, REPORT_PHYSICAL_ADDR)
> >>>>     reason: invalid-op (0x03)
> >>>>     Sequence: 0 Rx Timestamp: 30981.949s
> >>>> Received from TV to Specific (0 to 14): GIVE_OSD_NAME (0x46)
> >>>>     Sequence: 0 Rx Timestamp: 30982.026s
> >>>> Transmitted by Specific to TV (14 to 0): SET_OSD_NAME (0x47):
> >>>>     name: TV
> >>>>     Sequence: 24 Tx Timestamp: 30982.137s
> >>>>
> >>>> After this point in time the standby command will succeed and the
> >>>> projector will turn off. It's quite inconvenient to have to wait over
> >>>> 20 minutes to turn the projector back off again. Any idea how I can
> >>>> shorten this delay?
> >>>
> >>> There is something weird about your setup and EDID. I can't really tell
> >>> what it is.
> >>
> >> After making the above changes and retesting, the behavior didn't
> >> change. I still get the device not connected message and the invalid
> >> physical address when I try to do standby. I should also note that one
> >> way around this issue is to reboot the RPi. For some reason that seems
> >> to get around the long delay in getting the physical address.
> >>
> >> I don't know what would be strange about my set up other than the
> >> projector itself and a couple of lines I uncommented in the config.txt
> >> to set the RPi to use HDMI even if the projector is not on at the time
> >> of booting. Is there more information I can provide that would allow
> >> us to figure out what's going on? If you are correct that for some
> >> reason it is just not reading the EDID, is there a way to manually
> >> provide that? I don't know much about it, but it's a static property
> >> of the device (the projector in this case), right?
> >
> > Since I noticed that the physical address is populated properly when
> > the RPi is booted while the projector is turned on, I did that and
> > then tried using the get-edid utility to see if I could read the EDID
> > block and save it to a file. Unfortunately, this didn't work, as the
> > utility reports that there was no EDID available on any of the buses.
> > So once again I am out of ideas.
>
> The EDID also appears in /sys:
>
> /sys/devices/platform/gpu/drm/card1/card1-HDMI-A-1/edid
> /sys/devices/platform/gpu/drm/card1/card1-HDMI-A-2/edid
>
> get-edid works fine on my RPi 4B, so if that doesn't work, then it really
> looks like there is something weird going on with your projector.

Thank you for that. Based on this information with the projector on
during boot, I was able to get the following output from parse-edid. I
did not copy the entire output, just a snippet to indicate that it is
able to get a valid EDID at boot time.

cat /sys/devices/platform/gpu/drm/card1/card1-HDMI-A-1/edid | parse-edid
Checksum Correct

Section "Monitor"
    Identifier "LG PROJECTOR"
    ModelName "LG PROJECTOR"
    VendorName "GSM"
    # Monitor Manufactured week 33 of 2017
    # EDID version 1.3
    # Digital Display
    DisplaySize 1600 900
    Gamma 2.20
    Option "DPMS" "false"
    Horizsync 30-83
    VertRefresh 58-62
    # Maximum pixel clock is 160MHz
    #Not giving standard mode: 640x480, 60Hz

In summary, it seems that at boot time and after waiting an extended
amount of time after turning on the projector using the image-view-on
command, the EDID file is available and valid. So although my
projector may be strange, I am guessing that there must be a way to
manually provide the EDID file, force the physical address, or some
other workaround/solution. However, I'm certainly no expert in this
area so I would defer to those of you who are.

Thanks,
Shawn




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux