MOD_HDCP_MESSAGE_ID_READ_LC_SEND_L_PRIME,
        MOD_HDCP_MESSAGE_ID_WRITE_SKE_SEND_EKS,
        MOD_HDCP_MESSAGE_ID_READ_REPEATER_AUTH_SEND_RECEIVERID_LIST,
+       MOD_HDCP_MESSAGE_ID_READ_REPEATER_AUTH_SEND_RECEIVERID_LIST_PART2,
        MOD_HDCP_MESSAGE_ID_WRITE_REPEATER_AUTH_SEND_ACK,
        MOD_HDCP_MESSAGE_ID_WRITE_REPEATER_AUTH_STREAM_MANAGE,
        MOD_HDCP_MESSAGE_ID_READ_REPEATER_AUTH_STREAM_READY,
        [MOD_HDCP_MESSAGE_ID_READ_LC_SEND_L_PRIME] = 0x80,
        [MOD_HDCP_MESSAGE_ID_WRITE_SKE_SEND_EKS] = 0x60,
        [MOD_HDCP_MESSAGE_ID_READ_REPEATER_AUTH_SEND_RECEIVERID_LIST] = 0x80,
+       [MOD_HDCP_MESSAGE_ID_READ_REPEATER_AUTH_SEND_RECEIVERID_LIST_PART2] = 0x80,
        [MOD_HDCP_MESSAGE_ID_WRITE_REPEATER_AUTH_SEND_ACK] = 0x60,
        [MOD_HDCP_MESSAGE_ID_WRITE_REPEATER_AUTH_STREAM_MANAGE] = 0x60,
        [MOD_HDCP_MESSAGE_ID_READ_REPEATER_AUTH_STREAM_READY] = 0x80,
        [MOD_HDCP_MESSAGE_ID_READ_LC_SEND_L_PRIME] = 0x692f8,
        [MOD_HDCP_MESSAGE_ID_WRITE_SKE_SEND_EKS] = 0x69318,
        [MOD_HDCP_MESSAGE_ID_READ_REPEATER_AUTH_SEND_RECEIVERID_LIST] = 0x69330,
+       [MOD_HDCP_MESSAGE_ID_READ_REPEATER_AUTH_SEND_RECEIVERID_LIST_PART2] = 0x69340,
        [MOD_HDCP_MESSAGE_ID_WRITE_REPEATER_AUTH_SEND_ACK] = 0x693e0,
        [MOD_HDCP_MESSAGE_ID_WRITE_REPEATER_AUTH_STREAM_MANAGE] = 0x693f0,
        [MOD_HDCP_MESSAGE_ID_READ_REPEATER_AUTH_STREAM_READY] = 0x69473,
 
 enum mod_hdcp_status mod_hdcp_read_rx_id_list(struct mod_hdcp *hdcp)
 {
-       enum mod_hdcp_status status;
+       enum mod_hdcp_status status = MOD_HDCP_STATUS_SUCCESS;
 
        if (is_dp_hdcp(hdcp)) {
+               uint32_t device_count = 0;
+               uint32_t rx_id_list_size = 0;
+               uint32_t bytes_read = 0;
+
                hdcp->auth.msg.hdcp2.rx_id_list[0] = 12;
                status = read(hdcp, MOD_HDCP_MESSAGE_ID_READ_REPEATER_AUTH_SEND_RECEIVERID_LIST,
-                               hdcp->auth.msg.hdcp2.rx_id_list+1,
-                               sizeof(hdcp->auth.msg.hdcp2.rx_id_list)-1);
-
+                                               hdcp->auth.msg.hdcp2.rx_id_list+1,
+                                               HDCP_MAX_AUX_TRANSACTION_SIZE);
+               if (status == MOD_HDCP_STATUS_SUCCESS) {
+                       bytes_read = HDCP_MAX_AUX_TRANSACTION_SIZE;
+                       device_count = HDCP_2_2_DEV_COUNT_LO(hdcp->auth.msg.hdcp2.rx_id_list[2]) +
+                                       (HDCP_2_2_DEV_COUNT_HI(hdcp->auth.msg.hdcp2.rx_id_list[1]) << 4);
+                       rx_id_list_size = MIN((21 + 5 * device_count),
+                                       (sizeof(hdcp->auth.msg.hdcp2.rx_id_list) - 1));
+                       status = read(hdcp, MOD_HDCP_MESSAGE_ID_READ_REPEATER_AUTH_SEND_RECEIVERID_LIST_PART2,
+                                       hdcp->auth.msg.hdcp2.rx_id_list + 1 + bytes_read,
+                                       (rx_id_list_size - 1) / HDCP_MAX_AUX_TRANSACTION_SIZE * HDCP_MAX_AUX_TRANSACTION_SIZE);
+               }
        } else {
                status = read(hdcp, MOD_HDCP_MESSAGE_ID_READ_REPEATER_AUTH_SEND_RECEIVERID_LIST,
                                hdcp->auth.msg.hdcp2.rx_id_list,