=== Введение === Alientek OA1 - это модуль для измерения сопротивления USB-кабеля методом Кельвина. Модуль может использоваться совместно с USB-тестерами Alientek C2 и C0, а также может работать напрямую с любым устройством с USB-хостом, например с компьютером. Про измерение сопротивления кабелей можно почитать [[https://telegra.ph/Soprotivlenie-USB-kabelej-01-17|мою старую статью]]. Поскольку документация есть только китайская, а некоторые детали онлайн-переводчиками переводятся отвратительно, добавлю в текст выдержки оттуда. === Что сделал Alientek === До Алиентека модули для измерения сопротивления выпускали Witrn и Ryken, их модули были совместимы между собой. Это был аналоговый прибор, который через 4 линии USB2 (VBUS/GND и D+/D-) позволял после подачи напряжения на VBUS/GND измерить ток на VBUS/GND и разницу напряжений на D+ и D-. Поделив напряжение на ток мы получали сопротивление кабеля, который подключался к модулю. Выдавалось суммарное сопротивление всех линий VBUS и GND в кабеле. Это была простая схема, которая не требовала ни сложной схемотехники в модуле, ни сложной логики в тестере. Я писал, что все при подключении модуля к KM003C мы можем посчитать сопротивление вручную, с помощью буквально двух операций. Алиентек внезапно решил изменить подход к модулю сопротивлений и сделал совершенно другую конструкцию. Вместо аналоговой логики он сделал цифровой модуль, который выглядит как USB устройство, которое периодически посылает измеренное сопротивление стандартным для USB способом. На самом деле Алиентек сделал больше: он предусмотрел два интерфейса общения с OA1: * Host computer mode, режим компьютера, обычное USB устройство для общения с компьютерами и другими устройствами, которые могут выступать хостами для USB устройств * Online mode, режим тестера, упрощенный протокол для тестеров C2 и C0. Причина появления online mode понятна: не хотелось реализовывать полноценный USB-host в тестере. Скорее всего это очень простой для реализации в железе протокол без интерфейсов, эндпоинтов и прочего usbшного. ==== Управление режимами ==== Управление режимами автоматическое. При подключении модуля оно на секунды представляется устройством и, если за 7 секунд к нему никто не подключился и не подал команду активации, то модуль прячет USB-устройство и переходит в режим тестера. Это просто и логично, но нужно помнить следующие правила работы с OA1: * Подключать модуль к тестеру или компьютеру нужно без кабеля * ПО на компьютере должно быть запущено перед подключением Если следовать этим правилам, то всё будет просто. Текущий режим определяется по светодиоду. Он голубой в режиме тестера и филетовый в режиме компьютера. === Внешний вид === С внешним видом всё просто и понятно. Взаимодействие с тестером или компьютером происходит через разъем Type-C маму снизу. Обратите внимание, если это мама, то с компьютером модуль соединяется кабелем, а с тестером через его папу. Для подключения тестируемых кабелей есть два Type-C разъема и один USB A. Обратите внимание, что если вы тестируете кабель USB A - Type-C, то подключать нужно только в правый Type-C разъем. Светодиод между разъемами Type-C полезен для понимания того, в каком состоянии сейчас устройство. Скопируем все варианты расцветок диода: ^цвет^состояние^комментарии^ |горит красный|инициализация|старт устройства, нужно ждать| |мигает фиолетовый|режим компьютера|тестируемый кабель не подключен| |горит фиолетовый|режим компьютера|тестируемый кабель подключен| |мигает голубой|режим тестера|тестируемый кабель не подключен| |горит голубой|режим тестера|тестируемый кабель подключен или тестер не подключен (гениально!)| |горит зеленый|режим обновления|ждем обновления| |мигает зеленый|режим обновления|получаем обновление| === Режим тестера === С тестером C2 всё просто. В папу тестера подключаем модуль. В маму тестера (не HID!!!, в рабочий разъем) подключаем через кабель источник. Type-C или USB A - без разницы. Отключать управляющие линии и линии данных у источника не надо. Переходим в Tools -> Kelvin Cable Res. Подключаем тестируемый кабель и когда синий светодиод перестаёт мигать видим измеренное сопротивление в милливольтах. Буква после сопротивления - это шкала качества Excellent-Good-Medium-Poor. Качество зависит от длины кабеля, которое переключается клавишами вниз и вверх и принимают значения 0.3 - 1 - 1.5 - 2 - 3 в метрах. Справка по оценке качества в нижнем левом углу. Также на экране виден тип кабеля C-C или A-C и база измерения: текущее напряжение, ток и мощность. Также показывают целостность линий D+, D-, CC1, CC2, SBU1, SBU2. Тут есть вопрос к создателям, потому что ну не могут СС1 и CC2 одновременно прозваниваться. Банально по стандарту не могут. Может быть continuity check переводится по-другому, не знаю. С учетом этого, единственное, что можно увидеть полезного - это наличие в кабеле не очень актуальных линий SBU1/2. Удержание кнопки OK переключает показ суммарного и раздельного сопротивления VBUS и GND. Ну ок. Пользы от такого измерения не вижу. Особенно если учесть, что **кабель** по стандарту должен закоротить все одноименные физические провода VBUS и отдать результат на все четыре одноименных контакта. Аналогично должно быть и с землей. Кажется, что что-то из ряда вон выходящее с раздельными сопротивлениями крайне маловероятно, сопротивления VBUS и GND будут скорее всего сопоставимы. А что-то типа одна жила GND против восьми жил VBUS - это творение совсем уж безумного китайца. Процесс снятия показаний удобный. Меняешь кабель и тестер сам показывает сопротивление нового кабеля. Но смущает то, что измерения производятся на токе чуть меньше 0.3A. Модули Ryken/Witrn измеряют на 2A. Понятно, что у OA1 всё компактно и некуда отводить 10 ватт тепла. Но тем ожидаемее вопрос, не с этим ли связаны занижения результатов по сравнению с теплым аналоговым модулем. И еще пару замечаний. Постарайтесь не касаться платы OA1, берите её только за края, прикосновение к микросхемам может исказить измерение. И после переподключения могут проскочить пару неверных значений, поэтому лучше подождать буквально пару секунд стабилизации результата. === Режим компьютера === Здесь всё очень похоже на режим тестера. Подключаем к компьютеру через кабель (Type-C или USB A - без разницы). Только светодиод фиолетовый, а не синий. Драйвер OA1 не нужен, это стандартное HID-устройство. Запускаем приложение, подключаем OA1, дожидаемся фиолетового цвета и подключаем тестируемый кабель. Что использовать? Родное приложение под windows можно взять [[https://drive.google.com/drive/folders/15-gp4VZoHuMszkG1SA08h5WlOsfQ8DvP|тут (спасибо tomoca!)]]. У него есть две уникальные функции - обновление прошивки и калибровка. Но я посоветую еще пару приложений. Первое приложение - это [[https://github.com/RyuhungLiu/LineResistanceHost_WinUI|LineResistance]] - приложение на .net с открытым кодом, очень близкое к родному, но понагляднее. Оно интересно тем, что кроме Alientek C2+OA1, проддерживает еще и Witrn K2 с аналоговым модулем, пользуясь тем, что оно выдаёт по USB ток и напряжение D+/D-. Второе приложение - [[https://github.com/bruno-ntmr/atk-oa1|питоновские скрипты от Виктора Карпова]]. Там есть веб-морда для модуля и даже пример скрипта oa1_client.py, который можно взять за основу для собственных автоматизаций чтения сопротивлений. Комментарии в начале скрипта исчерпывающе описывают протокол взаимодействия с OA1. === Заключение === Alientek OA1 - забавный гаджет для измерения сопротивления USB кабелей. Рынок USB тестеров (ну как рынок - скорее четыре торговые точки на одном пятачке) консервативен и любит следовать удачным решениям. Выпустил ChargerLab KM003C - и все заменили прямоугольники на квадратики с тремя полосками V/A/W и кнопкой Be Ready. Alientek пытается выделиться и с OA1, вопреки аналоговому решению остальныз, кажется, что у них получилось. Это не революция, аналоговый модуль от Ryken/Witrn не хуже, но это другая ветка эволюции. Не нужен переходник с отрезанием линий данных, можно автоматизировать замеры с компьютера. Одно хорошо - решился вопрос с загадочным вырезом в коробке Alientek C0. Удачи в измерениях!