This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DM8168CCYGH HDMI HDCP authentication failed

Hi there,

we have problem on our custom dm8168 board, this is happend on our reversion 3 board, we are using EZSDK 5_05_02_00 with latest DVRRDK hdmi hdcp patched,  for the previous version, HDCP on the HDMI is alway fine, but it is failed on the latest version, we checked our hardware design, there are no big changes with the 2nd version, all the design relate the on-board hdmi remain the same, then we checked the ddc i2c bus of HDMI with oscilloscope, and also print kernel debug information of hdcp, it seems, that the dm8168 and receiver(HDCP compatible monitor ), can send AKSV, BKSV and random number AN correctly, the only problem is the R value in dm8168's register is not equal to the R' which read from receiver, which cause he HDCP handshake  failure, we also check the part number of the dm8168, it seems nothing special, it using the same cpu with the last version, is anyone have any idea, thank you in advance.

Kevin

  • Hi Kevin,
     
    If the EDID reads / HDCPs BKSV/AN is read correctly the I2C bus should be OK
    Ri mismatch can occur
    • If HDCP is not supported in the TI8xx device 
    • If sink (monitor) do not support HDCP
    • If you using an analyzer to test HDCP and have programmed test keys in the analyzer
    • HPD line is miss behaving

    Also,

    Can you please share the log printed by the driver (use dmesg). Can you make sure that you are using the same kernel config / code base in rev 2 and rev 3 boards?

    Thanks,

    Sujith



  • Hi Sujith,

    Thank you so your reply, Yes, like you said, I checked the  BKSV read from receiver and AKSV/AN sent from DM8168 to receiver using oscilloscope, and compare it with debug information, it seems no problem there, so ddc i2c is working properly.

    I tested the 2nd and 3rd version board exactly the same version kernel and our own application, and with the same test environment, our monitor is HDCP supported, which working without any problem for the 2nd version board,  and for DM8168, we alway bought from ARROW http://parts.arrow.com/item/detail/texas-instruments/tms320dm8168ccygh#MQMM , and the part number is TMS320DM8168CCYGH with hdcp support, I am not using an analayzer to test HDCP, I just hock up the scope to the on-board hdmi ddc i2c bus, to check the hdcp handshake procedure.

    Here is the debug information of 2nd version( HDCP successful ) and 3rd version( HDCP FAILURE ), you will see the BKSV is alway the same, because I test it with the same monitor. so please let me know if you find something wrong, thank you, is there any possible that the HDCP key vectors in the dm8168 is wrong, because we have one of our first version board,  the AKSV is not right, which consist with 19 zero bits and 21 one bits, which not pass the AKSV key verification step, that is the reason why I doubt about it.

    3rd version dmesg information:

    VPSS_GRPX : please open fb0 node first.
    VPSS_GRPX : please open fb1 node first.
    VPSS_GRPX : please open fb2 node first.
    found best resolution: 1920x1080 (28)
    Extension block present db 3 1d
    84
    Extension block present db 2 1d
    84
    Extension block present db 1 1d
    84
    Extension block present db 3 1d
    84
    Extension block present db 3 1d
    84
    HDCP: hdcp_irq_cb() status=0
    HDCP: hdcp_start_frame_cb() 4294702306
    HDCP: hdcp_work_queue() - START - 4294702606 hdmi=1 hdcp=0 auth=0 evt= 2 2 hdcp_ctrl=00
    HDCP: <6>DEBUG-STATE-MC: hdcp_state - Disabled
    HDCP: hdcp_work_queue() - END - 4294702606 hdmi=1 hdcp=0 auth=0 evt=2 2 
    VPSS_GRPX : please open fb1 node first.
    VPSS_GRPX : please open fb2 node first.
    eth0: no IPv6 routers present
    VPSS_GRPX : (0)- region(1920x1080) out of frame(1024x768).
    VPSS_GRPX : (1)- region(1920x1080) out of frame(1024x768).
    VPSS_GRPX : please open fb0 node first.
    VPSS_GRPX : please open fb1 node first.
    VPSS_GRPX : please open fb2 node first.
    found best resolution: 1920x1080 (28)
    Extension block present db 3 1d
    84
    Extension block present db 2 1d
    84
    Extension block present db 1 1d
    84
    Extension block present db 3 1d
    84
    Extension block present db 3 1d
    84
    HDCP: hdcp_irq_cb() status=0
    HDCP: hdcp_start_frame_cb() 4294708926
    HDCP: hdcp_work_queue() - START - 4294709226 hdmi=1 hdcp=0 auth=0 evt= 2 2 hdcp_ctrl=00
    HDCP: <6>DEBUG-STATE-MC: hdcp_state - Disabled
    HDCP: hdcp_work_queue() - END - 4294709226 hdmi=1 hdcp=0 auth=0 evt=2 2 
    VPSS_GRPX : please open fb1 node first.
    VPSS_GRPX : please open fb2 node first.
    net eth1: attached PHY driver [Generic PHY] (mii_bus:phy_addr=0:03, id=282f014)
    ADDRCONF(NETDEV_UP): eth1: link is not ready
    Wrapper disabled...
    Wrapper Enabled...
    clock: 'mcasp0_fck' clock's parent 'sysclk20_ck' is in use can't change the rate usecount = 3
    Audio MCLK set rate failed 196608000 (current rate=196608000)
    Start audio transfer...
    Start audio transfer...
    Start audio transfer...
    Wrapper disabled...
    Wrapper disabled...
    Wrapper Enabled...
    clock: 'mcasp0_fck' clock's parent 'sysclk20_ck' is in use can't change the rate usecount = 3
    Audio MCLK set rate failed 180633600 (current rate=196608000)
    Start audio transfer...
    HDCP: hdcp_ioctl() - WAIT 4294747766 0
    HDCP: hdcp_ioctl() - ENABLE 4294747956
    HDCP: hdcp_work_queue() - START - 4294747956 hdmi=1 hdcp=0 auth=0 evt= 1 0 hdcp_ctrl=00
    HDCP: HDCP: authentication start
    HDCP: hdcp_lib_step1_start() 4294747956
    HDCP: RX mode: HDMI
    HDCP: hdcp_lib_set_av_mute() av_mute=1
    HDCP:     timeoutcount=63
    HDCP: HDCP: Encryption state changed: OFF hdcp_ctrl: 00
    HDCP: hdcp_lib_initiate_step1()
    HDCP: hdcp_lib_auto_ri_check() state=OFF
    HDCP: BKSV: 1d e1 c7 a3 62
    HDCP: hdcp_lib_set_repeater_bit_in_tx() value=1
    HDCP: hdcp_lib_auto_ri_check() state=OFF
    HDCP: hdcp_lib_set_repeater_bit_in_tx() value=0
    HDCP: HDCP RX is a receiver
    HDCP: hdcp_lib_auto_ri_check() state=OFF
    HDCP: hdcp_lib_generate_an()
    HDCP: AN: 2 66 59 60 b5 d c1 7f
    HDCP: hdcp_lib_auto_ri_check() state=OFF
    HDCP: AKSV: 3a 6e 42 5c b3
    HDCP: hdcp_lib_auto_ri_check() state=OFF
    HDCP: <6>DEBUG-STATE-MC: hdcp_state - Disabled
    HDCP: <6>DEBUG-STATE-MC: Event enabled
    HDCP: hdcp_work_queue() - END - 4294747966 hdmi=1 hdcp=3 auth=2 evt=1 0 
    HDCP: hdcp_work_queue() - START - 4294748076 hdmi=1 hdcp=3 auth=2 evt= 8 7 hdcp_ctrl=0e
    HDCP: hdcp_lib_step1_r0_check() 4294748076
    HDCP: hdcp_lib_r0_check()
    HDCP: hdcp_lib_auto_ri_check() state=OFF
    HDCP: ROTX: d03e RORX:2e6a
    HDCP: step1 r0 check -2
    HDCP: hdcp_lib_auto_ri_check() state=OFF
    HDCP: hdcp_lib_auto_bcaps_rdy_check() state=OFF
    HDCP: hdcp_lib_auto_bcaps_rdy_check() Done
    HDCP: hdcp_lib_set_av_mute() av_mute=1
    HDCP:     timeoutcount=255
    HDCP: HDCP: Encryption state changed: OFF hdcp_ctrl: 0e
    HDCP: hdcp_lib_disable() 4294748076
    HDCP: hdcp_lib_set_av_mute() av_mute=16
    HDCP:     timeoutcount=255
    HDCP: HDCP: authentication failed - retrying
    HDCP: hdcp_work_queue() - END - 4294748076 hdmi=1 hdcp=2 auth=5 evt=8 7 
    HDCP: hdcp_work_queue() - START - 4294748176 hdmi=1 hdcp=2 auth=5 evt= 8 9 hdcp_ctrl=08
    HDCP: HDCP: authentication start
    HDCP: hdcp_lib_step1_start() 4294748176
    HDCP: RX mode: HDMI
    HDCP: hdcp_lib_set_av_mute() av_mute=1
    HDCP:     timeoutcount=255
    HDCP: HDCP: Encryption state changed: OFF hdcp_ctrl: 08
    HDCP: hdcp_lib_initiate_step1()
    HDCP: hdcp_lib_auto_ri_check() state=OFF
    HDCP: BKSV: 1d e1 c7 a3 62
    HDCP: hdcp_lib_set_repeater_bit_in_tx() value=1
    HDCP: hdcp_lib_auto_ri_check() state=OFF
    HDCP: hdcp_lib_set_repeater_bit_in_tx() value=0
    HDCP: HDCP RX is a receiver
    HDCP: hdcp_lib_auto_ri_check() state=OFF
    HDCP: hdcp_lib_generate_an()
    HDCP: AN: 39 ba f8 5b 98 99 c 71
    HDCP: hdcp_lib_auto_ri_check() state=OFF
    HDCP: AKSV: 3a 6e 42 5c b3
    HDCP: hdcp_lib_auto_ri_check() state=OFF
    HDCP: <6>DEBUG-STATE-MC: hdcp_state - Auth start - restart attempt
    HDCP: hdcp_work_queue() - END - 4294748186 hdmi=1 hdcp=3 auth=2 evt=8 9 
    HDCP: hdcp_work_queue() - START - 4294748296 hdmi=1 hdcp=3 auth=2 evt= 8 7 hdcp_ctrl=0e
    HDCP: hdcp_lib_step1_r0_check() 4294748296
    HDCP: hdcp_lib_r0_check()
    HDCP: hdcp_lib_auto_ri_check() state=OFF
    HDCP: ROTX: 253a RORX:efe0
    HDCP: step1 r0 check -2
    HDCP: hdcp_lib_auto_ri_check() state=OFF
    HDCP: hdcp_lib_auto_bcaps_rdy_check() state=OFF
    HDCP: hdcp_lib_auto_bcaps_rdy_check() Done
    HDCP: hdcp_lib_set_av_mute() av_mute=1
    HDCP:     timeoutcount=255
    HDCP: HDCP: Encryption state changed: OFF hdcp_ctrl: 0e
    HDCP: hdcp_lib_disable() 4294748296
    HDCP: hdcp_lib_set_av_mute() av_mute=16
    HDCP:     timeoutcount=255
    HDCP: HDCP: authentication failed - retrying
    HDCP: hdcp_work_queue() - END - 4294748296 hdmi=1 hdcp=2 auth=5 evt=8 7 
    HDCP: hdcp_work_queue() - START - 4294748396 hdmi=1 hdcp=2 auth=5 evt= 8 9 hdcp_ctrl=08
    HDCP: HDCP: authentication start
    HDCP: hdcp_lib_step1_start() 4294748396
    HDCP: RX mode: HDMI
    HDCP: hdcp_lib_set_av_mute() av_mute=1
    HDCP:     timeoutcount=255
    HDCP: HDCP: Encryption state changed: OFF hdcp_ctrl: 08
    HDCP: hdcp_lib_initiate_step1()
    HDCP: hdcp_lib_auto_ri_check() state=OFF
    HDCP: BKSV: 1d e1 c7 a3 62
    HDCP: hdcp_lib_set_repeater_bit_in_tx() value=1
    HDCP: hdcp_lib_auto_ri_check() state=OFF
    HDCP: hdcp_lib_set_repeater_bit_in_tx() value=0
    HDCP: HDCP RX is a receiver
    HDCP: hdcp_lib_auto_ri_check() state=OFF
    HDCP: hdcp_lib_generate_an()
    HDCP: AN: ff 90 dd 4f e0 59 3c e3
    HDCP: hdcp_lib_auto_ri_check() state=OFF
    HDCP: AKSV: 3a 6e 42 5c b3
    HDCP: hdcp_lib_auto_ri_check() state=OFF
    HDCP: <6>DEBUG-STATE-MC: hdcp_state - Auth start - restart attempt
    HDCP: hdcp_work_queue() - END - 4294748406 hdmi=1 hdcp=3 auth=2 evt=8 9 
    HDCP: hdcp_work_queue() - START - 4294748516 hdmi=1 hdcp=3 auth=2 evt= 8 7 hdcp_ctrl=0e
    HDCP: hdcp_lib_step1_r0_check() 4294748516
    HDCP: hdcp_lib_r0_check()
    HDCP: hdcp_lib_auto_ri_check() state=OFF
    HDCP: ROTX: 6014 RORX:7c20
    HDCP: step1 r0 check -2
    HDCP: hdcp_lib_auto_ri_check() state=OFF
    HDCP: hdcp_lib_auto_bcaps_rdy_check() state=OFF
    HDCP: hdcp_lib_auto_bcaps_rdy_check() Done
    HDCP: hdcp_lib_set_av_mute() av_mute=1
    HDCP:     timeoutcount=255
    HDCP: HDCP: Encryption state changed: OFF hdcp_ctrl: 0e
    HDCP: hdcp_lib_disable() 4294748516
    HDCP: hdcp_lib_set_av_mute() av_mute=16
    HDCP:     timeoutcount=255
    HDCP: HDCP: authentication failed - retrying
    HDCP: hdcp_work_queue() - END - 4294748516 hdmi=1 hdcp=2 auth=5 evt=8 7 
    

    2nd version dmesg information:

    VPSS_GRPX : please open fb0 node first.
    VPSS_GRPX : please open fb1 node first.
    VPSS_GRPX : please open fb2 node first.
    found best resolution: 1920x1080 (28)
    Extension block present db 3 1d
    84
    Extension block present db 2 1d
    84
    Extension block present db 1 1d
    84
    Extension block present db 3 1d
    84
    Extension block present db 3 1d
    84
    HDCP: hdcp_irq_cb() status=0
    HDCP: hdcp_start_frame_cb() 4294700406
    HDCP: hdcp_work_queue() - START - 4294700706 hdmi=1 hdcp=0 auth=0 evt= 2 2 hdcp_ctrl=00
    HDCP: <6>DEBUG-STATE-MC: hdcp_state - Disabled
    HDCP: hdcp_work_queue() - END - 4294700706 hdmi=1 hdcp=0 auth=0 evt=2 2 
    VPSS_GRPX : please open fb1 node first.
    VPSS_GRPX : please open fb2 node first.
    eth0: no IPv6 routers present
    HDCP: hdcp_ioctl() - WAIT 4294705046 0
    VPSS_GRPX : (0)- region(1920x1080) out of frame(1024x768).
    VPSS_GRPX : (1)- region(1920x1080) out of frame(1024x768).
    HDCP: hdcp_ioctl() - ENABLE 4294705246
    HDCP: hdcp_work_queue() - START - 4294705246 hdmi=1 hdcp=0 auth=0 evt= 1 0 hdcp_ctrl=00
    HDCP: HDCP: authentication start
    HDCP: hdcp_lib_step1_start() 4294705246
    HDCP: RX mode: HDMI
    HDCP: hdcp_lib_set_av_mute() av_mute=1
    HDCP:     timeoutcount=63
    HDCP: HDCP: Encryption state changed: OFF hdcp_ctrl: 00
    HDCP: hdcp_lib_initiate_step1()
    HDCP: hdcp_lib_auto_ri_check() state=OFF
    HDCP: BKSV: 1d e1 c7 a3 62
    HDCP: hdcp_lib_set_repeater_bit_in_tx() value=1
    HDCP: hdcp_lib_auto_ri_check() state=OFF
    HDCP: hdcp_lib_set_repeater_bit_in_tx() value=0
    HDCP: HDCP RX is a receiver
    HDCP: hdcp_lib_auto_ri_check() state=OFF
    HDCP: hdcp_lib_generate_an()
    HDCP: AN: 3a d 41 6a 7f a7 9e 45
    HDCP: hdcp_lib_auto_ri_check() state=OFF
    HDCP: AKSV: 1c d5 fc 90 cc
    HDCP: hdcp_lib_auto_ri_check() state=OFF
    HDCP: <6>DEBUG-STATE-MC: hdcp_state - Disabled
    HDCP: <6>DEBUG-STATE-MC: Event enabled
    HDCP: hdcp_work_queue() - END - 4294705256 hdmi=1 hdcp=3 auth=2 evt=1 0 
    adv7604 1-0020: Illegal preset value
    HDCP: hdcp_work_queue() - START - 4294705366 hdmi=1 hdcp=3 auth=2 evt= 8 7 hdcp_ctrl=0e
    HDCP: checking hdcp_wait_delay
    HDCP: hdcp_lib_step1_r0_check() 4294705366
    HDCP: hdcp_lib_r0_check()
    HDCP: hdcp_lib_auto_ri_check() state=OFF
    HDCP: ROTX: 1870 RORX:1870
    HDCP: step1 r0 check 0
    HDCP: HDCP: Encryption state changed: ON hdcp_ctrl: 0f
    HDCP: hdcp_lib_auto_ri_check() state=ON
    HDCP: hdcp_lib_set_av_mute() av_mute=16
    HDCP:     timeoutcount=255
    HDCP: HDCP: authentication step 1 successful - Receiver
    HDCP: Wait for user space task 1
    HDCP: hdcp_ioctl() - DONE 4294705366 1
    HDCP: hdcp_ioctl() - WAIT 4294705366 0
    HDCP: User space task done 0
    HDCP: hdcp_work_queue() - END - 4294705366 hdmi=1 hdcp=5 auth=4 evt=8 7 
    VPSS_GRPX : please open fb0 node first.
    VPSS_GRPX : please open fb1 node first.
    VPSS_GRPX : please open fb2 node first.
    found best resolution: 1920x1080 (28)
    Extension block present db 3 1d
    84
    Extension block present db 2 1d
    84
    Extension block present db 1 1d
    84
    Extension block present db 3 1d
    84
    Extension block present db 3 1d
    84
    HDCP: hdcp_irq_cb() status=0
    HDCP: hdcp_start_frame_cb() 4294706696
    HDCP: hdcp_work_queue() - START - 4294706996 hdmi=1 hdcp=5 auth=4 evt= 2 2 hdcp_ctrl=00
    HDCP: hdcp_work_queue() - END - 4294706996 hdmi=1 hdcp=5 auth=4 evt=2 2 
    VPSS_GRPX : please open fb1 node first.
    VPSS_GRPX : please open fb2 node first.
    HDCP: hdcp_ioctl() - DISABLE 4294708166
    HDCP: hdcp_work_queue() - START - 4294708166 hdmi=1 hdcp=5 auth=4 evt= 1 1 hdcp_ctrl=00
    HDCP: HDCP: disabled
    HDCP: hdcp_lib_disable() 4294708166
    HDCP: hdcp_lib_set_av_mute() av_mute=16
    HDCP:     timeoutcount=63
    HDCP: Wait for user space task 4
    HDCP: hdcp_ioctl() - DONE 4294708166 4
    HDCP: User space task done 0
    HDCP: <6>DEBUG-STATE-MC: hdcp_state - Disabled
    HDCP: hdcp_work_queue() - END - 4294708166 hdmi=1 hdcp=0 auth=0 evt=1 1 
    net eth1: attached PHY driver [Generic PHY] (mii_bus:phy_addr=0:03, id=282f014)
    ADDRCONF(NETDEV_UP): eth1: link is not ready
    Wrapper disabled...
    Wrapper Enabled...
    clock: 'mcasp0_fck' clock's parent 'sysclk20_ck' is in use can't change the rate usecount = 3
    Audio MCLK set rate failed 196608000 (current rate=196608000)
    Start audio transfer...
    Start audio transfer...
    adv7604 1-0020: Illegal preset value
    Wrapper disabled...
    Wrapper disabled...
    Wrapper Enabled...
    clock: 'mcasp0_fck' clock's parent 'sysclk20_ck' is in use can't change the rate usecount = 3
    Audio MCLK set rate failed 180633600 (current rate=196608000)
    Start audio transfer...
    HDCP: hdcp_ioctl() - WAIT 4294749026 0
    HDCP: hdcp_ioctl() - ENABLE 4294749216
    HDCP: hdcp_work_queue() - START - 4294749216 hdmi=1 hdcp=0 auth=0 evt= 1 0 hdcp_ctrl=00
    HDCP: HDCP: authentication start
    HDCP: hdcp_lib_step1_start() 4294749216
    HDCP: RX mode: HDMI
    HDCP: hdcp_lib_set_av_mute() av_mute=1
    HDCP:     timeoutcount=255
    HDCP: HDCP: Encryption state changed: OFF hdcp_ctrl: 00
    HDCP: hdcp_lib_initiate_step1()
    HDCP: hdcp_lib_auto_ri_check() state=OFF
    HDCP: BKSV: 1d e1 c7 a3 62
    HDCP: hdcp_lib_set_repeater_bit_in_tx() value=1
    HDCP: hdcp_lib_auto_ri_check() state=OFF
    HDCP: hdcp_lib_set_repeater_bit_in_tx() value=0
    HDCP: HDCP RX is a receiver
    HDCP: hdcp_lib_auto_ri_check() state=OFF
    HDCP: hdcp_lib_generate_an()
    HDCP: AN: 2d a1 41 7e d7 2f b3 eb
    HDCP: hdcp_lib_auto_ri_check() state=OFF
    HDCP: AKSV: 1c d5 fc 90 cc
    HDCP: hdcp_lib_auto_ri_check() state=OFF
    HDCP: <6>DEBUG-STATE-MC: hdcp_state - Disabled
    HDCP: <6>DEBUG-STATE-MC: Event enabled
    HDCP: hdcp_work_queue() - END - 4294749226 hdmi=1 hdcp=3 auth=2 evt=1 0 
    HDCP: hdcp_work_queue() - START - 4294749336 hdmi=1 hdcp=3 auth=2 evt= 8 7 hdcp_ctrl=0e
    HDCP: checking hdcp_wait_delay
    HDCP: hdcp_lib_step1_r0_check() 4294749336
    HDCP: hdcp_lib_r0_check()
    HDCP: hdcp_lib_auto_ri_check() state=OFF
    HDCP: ROTX: ff61 RORX:ff61
    HDCP: step1 r0 check 0
    HDCP: HDCP: Encryption state changed: ON hdcp_ctrl: 0f
    HDCP: hdcp_lib_auto_ri_check() state=ON
    HDCP: hdcp_lib_set_av_mute() av_mute=16
    HDCP:     timeoutcount=255
    HDCP: HDCP: authentication step 1 successful - Receiver
    HDCP: Wait for user space task 1
    HDCP: hdcp_ioctl() - DONE 4294749336 1
    HDCP: hdcp_ioctl() - WAIT 4294749336 0
    HDCP: User space task done 0
    HDCP: hdcp_work_queue() - END - 4294749336 hdmi=1 hdcp=5 auth=4 evt=8 7 
    found best resolution: 1920x1080 (28)
    Extension block present db 3 1d
    84
    Extension block present db 2 1d
    84
    Extension block present db 1 1d
    84
    Extension block present db 3 1d
    84
    Extension block present db 3 1d
    84
    HDCP: hdcp_irq_cb() status=0
    HDCP: hdcp_start_frame_cb() 4294752196
    HDCP: hdcp_work_queue() - START - 4294752496 hdmi=1 hdcp=5 auth=4 evt= 2 2 hdcp_ctrl=00
    HDCP: hdcp_work_queue() - END - 4294752496 hdmi=1 hdcp=5 auth=4 evt=2 2 
    Wrapper disabled...
    Wrapper disabled...
    Wrapper Enabled...
    clock: 'mcasp0_fck' clock's parent 'sysclk20_ck' is in use can't change the rate usecount = 3
    Audio MCLK set rate failed 180633600 (current rate=196608000)
    Start audio transfer...
    


  • Hi Kevin,
     
    Yes, you are right if the AKSV do not contain 20 bits of 0 and 1, it violates the rule. In that version of the board, i hope HDCP was failing.
     
    On board revision 2 & 3, AKSV seems to be alright.
     
    Can you please add debug logs to print the computed Ri and Received Ri, i just want to ensure its truly mismatches.
     
    Also, would it be possible to put the silicon used on Rev 2 on Rev 3 board?
     
    Thanks,
    Sujith
  • Sujith,

    Hi, for the dmesg of 3rd version board above, you can see that the debug information  HDCP: ROTX: d03e RORX:2e6a, the ROTX is the data read from i2c, and the RORX is the data read from local IP core registers from dm8168, and it is mismatched, then It failed the 1st authentication step, and keep retrying, for the 2rd board, it alway have R and R' matched, then it pass the first authentication step and run into the third authentication, and finish the whole verification procedure.

    For the silicon, the information on the processor looks the same, the package symbolization and revision identification, and I also check with the silicon Revision using JTAG to read the address 0x4814 0600 as described in following article, http://www.ti.com/lit/er/sprz329e/sprz329e.pdf , then it return the same value 0x3B81 E02F, which should confirm 2nd and 3rd board using the same silicon revison 2.1 is that right? Thank you

    Best

    Kevin

     

  • Hi Sujith,

    I also check the behavior of HDCP authentication through scope, and compare the timing and sequence between 2nd and 3d board, it seems everything behavior the same as following.

     1. Process's hdmi module wirte 0x00 at address 0x74,and the sink return the BKSV right away, after about 35us, process write 0x40, and the sink return the bcap 0x93, after that the processor double check the BKSV, and the monitor return the same BKSV.

    2.After checking the BSKV about 10ms, DM8168 write AN begin with 0x18 and then AKSV begin with 0x10 to the sink, then it waiting around 110ms, dm8168 send 0x08, to read the Ri' back from sink, then, dm8168 compare the value Ri' in IP Core with the received Ri'.

    For the 2nd version, Ri is always equal with Ri', for the 3rd board, it is always mismatched, any idea on that? Looking forward for your answer, thanks.

    Kevin

  • HI Sujith,

    Is there have anyway to check how's the dm8168 calculate the Ri, it seems, K is calculated based on the BKSV and 40 Key vectors stored in the dm8168, and then K is used to generate Ri for some enciphered funtion, My question is that if there have anyway to check the HDCP key vectors storages to make sure that is correct or not.

    Kevin 

  • Hi Kevin,
    No one can access the 40 Keys stored, also the Ri computation is done by the hardware. Software can only start it.
    I afraid there is no process to check the stored key vectors.
    Can you cross check with the FAE supporting you on this.
    Thanks,
    Sujith
  • Suijth,

    Thanks for your answer, we are trying to contact FAE support right now, and waiting for the answer also.

    Kevin

  • Hi Sujith,

    Happy new year, right now, we have our processors under DMA with ARROW( The distributor ), Ti will check if the processor have problem or not, but that's may take long time.

    Other than that, we have new product's protocol board, the design is pretty close to the board I mentioned above, we are using the same chip, and one of our board's HDCP behavior is weird, I tested four of those boards, right now, one of the board is failed with samsung TV( T24B350 ) and successful with ACER monitor( H213H ) on the HDCP authentication, all the rest three boards are working fine with both monitors, the reason of failure is as the same as the problem I mentioned above, from the debug information, the authentication keep restarting since the R is not equal to R', and for the ACER monitor, the HDCP is working fine without any problem, so do you have any clue on this, thank you!

    Kevin