Ты зачем на ЛОРе запретил анонимам комментировать? Я бы уже давно тебе написал там.
Поясняю: сам этим делом интересовался какое-то время назад. Никакого механизма, позволяющего определять, что у тебя на линии кто-то сидит, если он никаких сигналов не шлет, не существует. Однако, при коннекте тебе приходит SET_CONTROL_LINE_STATE (DTR или RTS), так что можно выставлять флаг подсоединения (как
здесь у меня). Однако, аналогичный запрос ты получаешь, как только активируется модуль ядра, обслуживающий твою CDC. Поэтому нужно еще проверять при отправлении сообщений: если получаешь ошибку, сбрасываешь флаг коннекта в нуль. Еще некоторые терминалы могут послать SEND_BREAK при отключении, на него тоже сбрасываешь флаг (как и на состояние USB suspend).
Как вообще ты мог разрабатывать USB CDC, если не столкнулся с необходимостью реакции на базовые запросы хоста?
P.S. Да, в "блюпиле" жесткая подтяжка USB DP (да еще и резистор 10кОм вместо положенного 1.5кОм), поэтому нужно
немного переделать.