An apparatus for charging a Universal Serial Bus, USB, device according to an optimal charging mode, the apparatus comprising: a charging module, configured to obtain a descriptor of the USB device upon detection of the USB device on a USB bus, the charging module comprising: a memory, storing one or more descriptor entries, the one or more descriptor entries comprising: descriptor data, being arranged for matching the descriptor to a specific descriptor entry; and charging data, being arranged specifying the optimal charging mode for the USB device; and a controller, coupled to said memory, configured to compare the descriptor to the specific descriptor entry, and configured to initiate the optimal charging mode on the USB bus according to the charging data; wherein the charging module is disposed within a USB hub; characterized in that: the charging module is configured to obtain the descriptor by causing a first descriptor read command to be transmitted to the USB device over the USB bus; and the USB hub is coupleable to a USB host, and the charging. module is configured to issue a reset command to be transmitted to the USB device after obtaining the descriptor, thereby allowing for normal enumeration procedures by the USB host. a charging module, configured to obtain a descriptor of the USB device upon detection of the USB device on a USB bus, the charging module comprising: a memory, storing one or more descriptor entries, the one or more descriptor entries comprising: descriptor data, being arranged for matching the descriptor to a specific descriptor entry; and charging data, being arranged specifying the optimal charging mode for the USB device; and a controller, coupled to said memory, configured to compare the descriptor to the specific descriptor entry, and configured to initiate the optimal charging mode on the USB bus according to the charging data; wherein the charging module is disposed within a USB hub; characterized in that: the charging module is configured to obtain the descriptor by causing a first descriptor read command to be transmitted to the USB device over the USB bus; and the USB hub is coupleable to a USB host, and the charging. module is configured to issue a reset command to be transmitted to the USB device after obtaining the descriptor, thereby allowing for normal enumeration procedures by the USB host. a memory, storing one or more descriptor entries, the one or more descriptor entries comprising: descriptor data, being arranged for matching the descriptor to a specific descriptor entry; and charging data, being arranged specifying the optimal charging mode for the USB device; and descriptor data, being arranged for matching the descriptor to a specific descriptor entry; and charging data, being arranged specifying the optimal charging mode for the USB device; and a controller, coupled to said memory, configured to compare the descriptor to the specific descriptor entry, and configured to initiate the optimal charging mode on the USB bus according to the charging data; wherein the charging module is disposed within a USB hub; characterized in that: the charging module is configured to obtain the descriptor by causing a first descriptor read command to be transmitted to the USB device over the USB bus; and the USB hub is coupleable to a USB host, and the charging. module is configured to issue a reset command to be transmitted to the USB device after obtaining the descriptor, thereby allowing for normal enumeration procedures by the USB host. the charging module is configured to obtain the descriptor by causing a first descriptor read command to be transmitted to the USB device over the USB bus; and the USB hub is coupleable to a USB host, and the charging. module is configured to issue a reset command to be transmitted to the USB device after obtaining the descriptor, thereby allowing for normal enumeration procedures by the USB host.