Hi, Please, find attached two patches related with the Comedi layer. Each patch is a proposal to change the way the ranges tables are managed within the subdevice structure. As you may know, the range structure allows the translation of freshly acquired logical values into real values (thanks to the unit, the minimal and the maximal value) An acquisition subdevice can work with various ranges. That is why some tab field is necessary to hold them all in the subdevice descriptor structure. However, what I do not understand is why are there two fields to handle them (and we cannot use both at the same time). Currently, according to the ranges' type: - either same ranges for all channels - or a specific ranges table per channel, we have to use the field range_table or the field range_table_list. The range management could be made easier or at least more generic: - the first proposal introduces a container structure. Thanks to its first field, we could define the range's type for a specific subdevice; and the second field is devoted to store comedi_lrange pointers. Some inline helper functions were added so as to manage the range without having to get through the structures. - the second patch is the closest one from the original API. An internal structure is added (comedi_trange_struct) so as to handle per channel ranges tables. The internal range management code just has to detect which structure type is hidden behind the subdevice field range_table. These patches are neither that clean nor perfect, they are just some ideas I would like to share. By the way, these patches modify only the core files (kcomedilib and the drivers have been left unchanged). Best regards. Alexis.