Why is MySQL 5.5 ignoring this index?
You want INDEX(device_id, device_time_ms, id).  First the '=' fields, then, if there is nothing else in WHERE, all the fields of the ORDER BY.

Assuming this is a really large table, and there are a relatively small number of devices, the I recommend you normalize device_id.  That would shrink it from VARCHAR(30) to, say 3 bytes for MEDIUMINT UNSIGNED.  Or maybe it is already a number?  But mistakenly put into a varchar?