Вы можете настроить свой сокет так, чтобы он отображал сообщения об ошибках CAN.
Как описано в Уведомлениях о проблемах сети, драйвер интерфейса CAN может генерировать так называемые кадры сообщений об ошибках, которые при желании могут быть переданы пользовательскому приложению так же, как и другие кадры CAN.Возможные ошибки делятся на различные классы ошибок, которые могут быть отфильтрованы с использованием соответствующей маски ошибок.Для регистрации каждого возможного состояния ошибки CAN_ERR_MASK может использоваться как значение для маски ошибки.Значения для маски ошибок определены в linux / can / error.h
can_err_mask_t err_mask = ( CAN_ERR_TX_TIMEOUT | CAN_ERR_BUSOFF );
setsockopt(s, SOL_CAN_RAW, CAN_RAW_ERR_FILTER,
&err_mask, sizeof(err_mask));
См. Ядро документация для получения дополнительной информации.
Обновление
Взгляните на libsocketcan
и процедуру can_get_state .