Hmm, może właśnie SElinux musi być ustawiony na restrykcyjny, tak jak jest domyślnie? Ja nie przestawiałem na permissive przed próbą odpalenia diaga, po odpaleniu komendy momentalnie miałem na kompie dźwięk odłączenia, następnie podłączenia urządzenia i za chwilę widziałem diaga w menadżerze urządzeń (zrzuciłem sobie nawet qcn dla testów). A nie zrobiłeś np. spacji po przecinku między "diag" a "adb" w komendzie? Sprawdzam właśnie u siebie i ze spacją nie zaskakuje, "diag,adb" jest traktowane jako jeden parametr i nie może zawierać spacji. Dodatkowo widzę, że wersja abd ma też znaczenie - na 35 działa dobrze, na 31 nie ustawia poprawnie trybu, getprop sys.usb.config zwraca mtp,adb na tej wersji zamiast diag,adb.