Fix make_descriptor and implement device_read_descriptor