All of lore.kernel.org
 help / color / mirror / Atom feed
* Extremely long delay between CEC image-view-on an standby.
@ 2023-03-27 16:33 Shawn Lindberg
  2023-03-28  7:58 ` Hans Verkuil
  0 siblings, 1 reply; 7+ messages in thread
From: Shawn Lindberg @ 2023-03-27 16:33 UTC (permalink / raw)
  To: linux-media

Greetings, I am having trouble figuring out a very strange problem I'm
seeing. I have a Raspberry Pi 4B connected via HDMI to a LG projector.
I have no trouble turning the projector on using the following
commands:

cec-ctl -d0 --tv --cec-version-1.4
cec-ctl -d0 -t0 --image-view-on

I'm using CEC version 1.4 because that is what the projector supports.
I don't know whether that's necessary or contributing. However, if I
try to turn the projector off using standby, I get the following and
the projector does not turn off:

cec-ctl -d0 -t0 -T --standby
        CEC_ADAP_G_CAPS returned 0 (Success)
        CEC_ADAP_G_PHYS_ADDR returned 0 (Success)
        CEC_ADAP_G_LOG_ADDRS returned 0 (Success)
        CEC_ADAP_G_CONNECTOR_INFO returned 0 (Success)
Driver Info:
    Driver Name                : vc4_hdmi
    Adapter Name               : vc4
    Capabilities               : 0x0000011e
        Logical Addresses
        Transmit
        Passthrough
        Remote Control Support
        Connector Info
    Driver version             : 5.15.84
    Available Logical Addresses: 1
    DRM Connector Info         : card 0, connector 32
    Physical Address           : f.f.f.f
    Logical Address Mask       : 0x0000
    CEC Version                : 1.4
    Vendor ID                  : 0x000c03 (HDMI)
    OSD Name                   : 'TV'
    Logical Addresses          : 1 (Allow RC Passthrough)

      Logical Address          : Not Allocated
        Primary Device Type    : TV
        Logical Address Type   : TV


Transmit from Unregistered to TV (15 to 0):
STANDBY (0x36)
        CEC_TRANSMIT returned -1 (Machine is not on the network)

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
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?

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Extremely long delay between CEC image-view-on an standby.
  2023-03-27 16:33 Extremely long delay between CEC image-view-on an standby Shawn Lindberg
@ 2023-03-28  7:58 ` Hans Verkuil
  2023-03-29 19:56   ` Shawn Lindberg
  0 siblings, 1 reply; 7+ messages in thread
From: Hans Verkuil @ 2023-03-28  7:58 UTC (permalink / raw)
  To: Shawn Lindberg, linux-media

Hi Shawn,

On 3/27/23 18:33, Shawn Lindberg wrote:
> Greetings, I am having trouble figuring out a very strange problem I'm
> seeing. I have a Raspberry Pi 4B connected via HDMI to a LG projector.
> I have no trouble turning the projector on using the following
> commands:
> 
> 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.

> cec-ctl -d0 -t0 --image-view-on
> 
> I'm using CEC version 1.4 because that is what the projector supports.
> I don't know whether that's necessary or contributing. However, if I
> try to turn the projector off using standby, I get the following and
> the projector does not turn off:
> 
> cec-ctl -d0 -t0 -T --standby
>         CEC_ADAP_G_CAPS returned 0 (Success)
>         CEC_ADAP_G_PHYS_ADDR returned 0 (Success)
>         CEC_ADAP_G_LOG_ADDRS returned 0 (Success)
>         CEC_ADAP_G_CONNECTOR_INFO returned 0 (Success)
> Driver Info:
>     Driver Name                : vc4_hdmi
>     Adapter Name               : vc4
>     Capabilities               : 0x0000011e
>         Logical Addresses
>         Transmit
>         Passthrough
>         Remote Control Support
>         Connector Info
>     Driver version             : 5.15.84
>     Available Logical Addresses: 1
>     DRM Connector Info         : card 0, connector 32
>     Physical Address           : f.f.f.f

This is also weird: the physical address comes from the EDID of the TV
(projector in this case). f.f.f.f indicates that there is no TV
connected at all.

>     Logical Address Mask       : 0x0000
>     CEC Version                : 1.4
>     Vendor ID                  : 0x000c03 (HDMI)
>     OSD Name                   : 'TV'
>     Logical Addresses          : 1 (Allow RC Passthrough)
> 
>       Logical Address          : Not Allocated
>         Primary Device Type    : TV
>         Logical Address Type   : TV
> 
> 
> Transmit from Unregistered to TV (15 to 0):
> STANDBY (0x36)
>         CEC_TRANSMIT returned -1 (Machine is not on the network)

and that's why you get this: no physical address, no CEC.

> 
> 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.

Note that some messages (POLL and Image View On) are allowed to be sent
even if there is no EDID, which is probably why that works.

Regards,

	Hans

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Extremely long delay between CEC image-view-on an standby.
  2023-03-28  7:58 ` Hans Verkuil
@ 2023-03-29 19:56   ` Shawn Lindberg
  2023-03-31 20:23     ` Shawn Lindberg
  0 siblings, 1 reply; 7+ messages in thread
From: Shawn Lindberg @ 2023-03-29 19:56 UTC (permalink / raw)
  To: Hans Verkuil; +Cc: linux-media

On Tue, Mar 28, 2023 at 2:58 AM Hans Verkuil <hverkuil@xs4all.nl> 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.

> > 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?

Thanks,
Shawn

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Extremely long delay between CEC image-view-on an standby.
  2023-03-29 19:56   ` Shawn Lindberg
@ 2023-03-31 20:23     ` Shawn Lindberg
  2023-04-01  8:17       ` Hans Verkuil
  0 siblings, 1 reply; 7+ messages in thread
From: Shawn Lindberg @ 2023-03-31 20:23 UTC (permalink / raw)
  To: Hans Verkuil, linux-media

On Wed, Mar 29, 2023 at 2:56 PM Shawn Lindberg <shawn.lindberg@gmail.com> wrote:
>
> On Tue, Mar 28, 2023 at 2:58 AM Hans Verkuil <hverkuil@xs4all.nl> 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.

> > > 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.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Extremely long delay between CEC image-view-on an standby.
  2023-03-31 20:23     ` Shawn Lindberg
@ 2023-04-01  8:17       ` Hans Verkuil
  2023-04-01 20:55         ` Shawn Lindberg
  0 siblings, 1 reply; 7+ messages in thread
From: Hans Verkuil @ 2023-04-01  8:17 UTC (permalink / raw)
  To: Shawn Lindberg, linux-media

On 31/03/2023 22:23, Shawn Lindberg wrote:
> On Wed, Mar 29, 2023 at 2:56 PM Shawn Lindberg <shawn.lindberg@gmail.com> wrote:
>>
>> On Tue, Mar 28, 2023 at 2:58 AM Hans Verkuil <hverkuil@xs4all.nl> 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.

> 
>>>> 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.

Regards,

	Hans

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Extremely long delay between CEC image-view-on an standby.
  2023-04-01  8:17       ` Hans Verkuil
@ 2023-04-01 20:55         ` Shawn Lindberg
  2023-04-05 18:20           ` Shawn Lindberg
  0 siblings, 1 reply; 7+ messages in thread
From: Shawn Lindberg @ 2023-04-01 20:55 UTC (permalink / raw)
  To: Hans Verkuil; +Cc: linux-media

On Sat, Apr 1, 2023 at 3:17 AM Hans Verkuil <hverkuil@xs4all.nl> wrote:
>
> On 31/03/2023 22:23, Shawn Lindberg wrote:
> > On Wed, Mar 29, 2023 at 2:56 PM Shawn Lindberg <shawn.lindberg@gmail.com> wrote:
> >>
> >> On Tue, Mar 28, 2023 at 2:58 AM Hans Verkuil <hverkuil@xs4all.nl> 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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Extremely long delay between CEC image-view-on an standby.
  2023-04-01 20:55         ` Shawn Lindberg
@ 2023-04-05 18:20           ` Shawn Lindberg
  0 siblings, 0 replies; 7+ messages in thread
From: Shawn Lindberg @ 2023-04-05 18:20 UTC (permalink / raw)
  To: Hans Verkuil; +Cc: linux-media

On Sat, Apr 1, 2023 at 3:55 PM Shawn Lindberg <shawn.lindberg@gmail.com> wrote:
>
> On Sat, Apr 1, 2023 at 3:17 AM Hans Verkuil <hverkuil@xs4all.nl> wrote:
> >
> > On 31/03/2023 22:23, Shawn Lindberg wrote:
> > > On Wed, Mar 29, 2023 at 2:56 PM Shawn Lindberg <shawn.lindberg@gmail.com> wrote:
> > >>
> > >> On Tue, Mar 28, 2023 at 2:58 AM Hans Verkuil <hverkuil@xs4all.nl> 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.

I finally found some more time to experiment with this, and I tried
saving a copy of the EDID while it was available after the machine
rebooted and the projector automatically turned on. Unsurprisingly,
after I turned the projector off using standby and then turned it back
on using image-view-on, the EDID was not available from
/sys/devices/platform/gpu/drm/card1/card1-HDMI-A-1/edid.

So I tried the following command to see if I could get the physical
address to update from the saved EDID.

cec-ctl -d0 -t0 -T --phys-addr-from-edid projector_edid
        CEC_ADAP_G_CAPS returned 0 (Success)
The CEC adapter doesn't allow setting the physical address manually,
ignore this option.

        CEC_ADAP_S_PHYS_ADDR returned -1 (Inappropriate ioctl for device)
        CEC_ADAP_G_PHYS_ADDR returned 0 (Success)
        CEC_ADAP_G_LOG_ADDRS returned 0 (Success)
        CEC_ADAP_G_CONNECTOR_INFO returned 0 (Success)

I'm not really sure why this would be the case.

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2023-04-05 18:20 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-27 16:33 Extremely long delay between CEC image-view-on an standby Shawn Lindberg
2023-03-28  7:58 ` Hans Verkuil
2023-03-29 19:56   ` Shawn Lindberg
2023-03-31 20:23     ` Shawn Lindberg
2023-04-01  8:17       ` Hans Verkuil
2023-04-01 20:55         ` Shawn Lindberg
2023-04-05 18:20           ` Shawn Lindberg

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.