diff --git a/src/classic/avrcp.h b/src/classic/avrcp.h
index 38142f92c..5ace4df13 100644
--- a/src/classic/avrcp.h
+++ b/src/classic/avrcp.h
@@ -581,8 +581,8 @@ typedef struct {
     
     avrcp_battery_status_t battery_status;
     uint8_t battery_status_changed;
-    uint8_t volume_percentage;
-    uint8_t notify_volume_percentage_changed;
+    uint8_t absolute_volume;
+    uint8_t notify_absolute_volume_changed;
     
     uint8_t now_playing_info_response;
     uint8_t now_playing_info_attr_bitmap;
diff --git a/src/classic/avrcp_target.c b/src/classic/avrcp_target.c
index 9d18eb7da..ab3964fd0 100644
--- a/src/classic/avrcp_target.c
+++ b/src/classic/avrcp_target.c
@@ -743,20 +743,20 @@ uint8_t avrcp_target_battery_status_changed(uint16_t avrcp_cid, avrcp_battery_st
     return ERROR_CODE_SUCCESS;
 }
 
-uint8_t avrcp_target_volume_changed(uint16_t avrcp_cid, uint8_t volume_percentage){
+uint8_t avrcp_target_volume_changed(uint16_t avrcp_cid, uint8_t absolute_volume){
     avrcp_connection_t * connection = avrcp_get_connection_for_avrcp_cid_for_role(AVRCP_TARGET, avrcp_cid);
     if (!connection){
         log_error("avrcp_unit_info: could not find a connection.");
         return ERROR_CODE_UNKNOWN_CONNECTION_IDENTIFIER; 
     }
-    if (connection->volume_percentage == volume_percentage){
+    if (connection->absolute_volume == absolute_volume){
         return ERROR_CODE_SUCCESS;
     }
     
-    connection->volume_percentage = volume_percentage;
+    connection->absolute_volume = absolute_volume;
 
     if (connection->notifications_enabled & (1 << AVRCP_NOTIFICATION_EVENT_VOLUME_CHANGED )) {
-        connection->notify_volume_percentage_changed = 1;
+        connection->notify_absolute_volume_changed = 1;
         avrcp_request_can_send_now(connection, connection->l2cap_signaling_cid);
     } 
     return ERROR_CODE_SUCCESS;
@@ -1018,8 +1018,8 @@ static void avrcp_handle_l2cap_data_packet_for_signaling_connection(avrcp_connec
                             avrcp_target_response_vendor_dependent_interim(connection, pdu_id, event_id, NULL, 0);
                             break;
                         case AVRCP_NOTIFICATION_EVENT_VOLUME_CHANGED:
-                            connection->notify_volume_percentage_changed = 0;
-                            avrcp_target_response_vendor_dependent_interim(connection, pdu_id, event_id, (const uint8_t *)&connection->volume_percentage, 1);
+                            connection->notify_absolute_volume_changed = 0;
+                            avrcp_target_response_vendor_dependent_interim(connection, pdu_id, event_id, (const uint8_t *)&connection->absolute_volume, 1);
                             break;
                         case AVRCP_NOTIFICATION_EVENT_BATT_STATUS_CHANGED:
                             avrcp_target_response_vendor_dependent_interim(connection, pdu_id, event_id, (const uint8_t *)&connection->battery_status, 1);
@@ -1034,18 +1034,17 @@ static void avrcp_handle_l2cap_data_packet_for_signaling_connection(avrcp_connec
                     break;
                 }
                 case AVRCP_PDU_ID_SET_ABSOLUTE_VOLUME: {
-                    if (length != 1){
+                    if ( (length != 1) || ((pos + 1) > size)){
                         avrcp_target_response_reject(connection, subunit_type, subunit_id, opcode, pdu_id, AVRCP_STATUS_INVALID_COMMAND);
                         break;
                     }
 
-                    if ((pos + 1) > size) return;
                     uint8_t absolute_volume = packet[pos];
                     if (absolute_volume < 0x80){
-                        connection->volume_percentage = absolute_volume;
+                        connection->absolute_volume = absolute_volume;
                     }
-                    avrcp_target_response_accept(connection, subunit_type, subunit_id, opcode, pdu_id, connection->volume_percentage);
-                    avrcp_target_emit_volume_changed(avrcp_target_context.avrcp_callback, connection->avrcp_cid, connection->volume_percentage);
+                    avrcp_target_response_accept(connection, subunit_type, subunit_id, opcode, pdu_id, connection->absolute_volume);
+                    avrcp_target_emit_volume_changed(avrcp_target_context.avrcp_callback, connection->avrcp_cid, connection->absolute_volume);
                     break;
                 }
                 default:
@@ -1187,9 +1186,9 @@ static void avrcp_target_packet_handler(uint8_t packet_type, uint16_t channel, u
                         return;
                     }
                     
-                    if (connection->notify_volume_percentage_changed){
-                        connection->notify_volume_percentage_changed = 0;
-                        avrcp_target_send_notification(connection->l2cap_signaling_cid, connection, AVRCP_NOTIFICATION_EVENT_VOLUME_CHANGED, &connection->volume_percentage, 1);
+                    if (connection->notify_absolute_volume_changed){
+                        connection->notify_absolute_volume_changed = 0;
+                        avrcp_target_send_notification(connection->l2cap_signaling_cid, connection, AVRCP_NOTIFICATION_EVENT_VOLUME_CHANGED, &connection->absolute_volume, 1);
                         avrcp_target_reset_notification(connection, AVRCP_NOTIFICATION_EVENT_VOLUME_CHANGED);
                         avrcp_request_can_send_now(connection, connection->l2cap_signaling_cid);
                         return;
diff --git a/src/classic/avrcp_target.h b/src/classic/avrcp_target.h
index 111e13823..df132fdaa 100644
--- a/src/classic/avrcp_target.h
+++ b/src/classic/avrcp_target.h
@@ -182,11 +182,13 @@ uint8_t avrcp_target_battery_status_changed(uint16_t avrcp_cid, avrcp_battery_st
 
 /**
  * @param Set Volume and send notification if enabled
+/**
+ * @param Set Absolute Volume and send notification if enabled 
  * @param avrcp_cid
- * @param volume_percentage
+ * @param absolute_volume
  * @return
  */
-uint8_t avrcp_target_volume_changed(uint16_t avrcp_cid, uint8_t volume_percentage);
+uint8_t avrcp_target_volume_changed(uint16_t avrcp_cid, uint8_t absolute_volume);
 
 /**
  * @param Set Track and send notification if enabled