Когда-то мне повезло стать обладателем телевизора самсунг с проводным подключением к сети. Но недавно встала необходимость подключить мой телевизор к сети по wi-fi. Как известно, телевизор готов подключаться к вай-фай только с использованием родного самсунговского адаптера, который стоит чрезмерно дорого за предоставляемый функционал. Ниже я расскажу о том, как подключить телевизор самсунг Е-серии к wifi за 250р вместо 4000.
Просто нужно взять адаптер на основе RT5370 и средствами родного линуксового драйвера поменять VID/PID на 148f:3572
iwpriv ra0 e2p 208=148f iwpriv ra0 e2p 20a=3572
Теперь вы можете запастись ночным временем и пивом, чтоб проделать это самостоятельно, собрав все грабли по дороге, ну или прочитать дальше многа букаф...
Прежде всего надо сказать огромное спасибо умельцам, которые провели огромную работу и составили список совместимых не родных адаптеров, а так же рассказали как сделать так, чтоб сетевуха стала дружественной самсунгу, и написали про это замечательную тему на форуме.
Для начала нам понадобится оборудование: сетевуха на основе чипа RT5370, стоимостью примерно 250р на алиэкспресс.
Чтоб телевизор признал ее родной, нужно поменять ее Vendor id (VID) и Product id (PID), точнее только PID тк в моем случае VID уже был подходящий. Для этого нам понадобится Linux и родные драйверы от Mediatek. На страничке скачивания ссылки для мак и линукс перепутаны, смотрите что качаете.
Обращаю ваше внимание на то, что в отличие от оригинальной инструкции с форума, я производил все действия на виртуалке, запущенной на макбуке, а подключение и отключение прошиваемого адаптера производилось не физически, а просто галочкой в виртуальной машине. Физически же, устройство один раз было подключено и оставалось в разъеме ноута до конца всех операций.
Нам понадобится Ubuntu 12, если точнее, то любой линукс с ядром 3x и достаточно старым gcc, который не сыпет ошибки на макросы __DATE__ и __TIME__ при компиляции (за это спасибо устаревшим драйверам от Mediatek, единственным, которые предлагают качать с официального сайта). Далее я буду рассказывать относительно Ubuntu 12, нам подойдет как сервер так и десктоп. Все команды выполняем от имени супер пользователя (root).
Первым делом убеждаемся что наш адаптер "виден" в линукс, для этого выполняем команду
lsusb
И в выводе находим устройство с VID:PID 148f:5370 (в моем случае) и подходящим названием.
Проводим подготовительные мероприятия к установке пакета build-essential, тк за время с момента выхода Ubuntu 12 многое изменилось. Вот проблема и ее решение, а если вкратце, то просто нужно выполнить на нашей виртуалке:
apt-get clean rm -rf /var/lib/apt/lists/* apt-get clean apt-get update apt-get upgrade
Теперь ставим пакет командой
apt-get install build-essential
Все готово для сборки драйвера, сейчас нужно отключить нашу сетевуху от виртуальной машины.
Распаковываем архив с драйвером в любое удобное место и... идем править исходники драйвера (о да! как же без этого). Подробное описание, что как и почему смотрите тут, а если вкратце то нам надо в файле include/os/rt_linux.h
исправить типы в структуре OS_FS_INFO.
Было
typedef struct _OS_FS_INFO_ { int fsuid; int fsgid; mm_segment_t fs; } OS_FS_INFO;
Стало
typedef struct _OS_FS_INFO_ { kuid_t fsuid; kgid_t fsgid; mm_segment_t fs; } OS_FS_INFO;
Меняем типы int
на kuid_t
и kgid_t
. После этого запускаем в папке с драйвером команду
make
и все успешно собирается.
После успешной сборки обращаемся к оригинальной инструкции и делаем следующее
# инсталлируем драйвер в систему insmod os/linux/rt5572sta.ko
# проверяем, что драйвер успешно установился lsmod | grep -B1 5572
# должно выдать что-то вроде # Module Size Used by # rt5572sta 718602 0
Теперь можно снова подключать сетевой адаптер к виртуальной машине. После этого выполняем команды
lsusb # и находим в выводе нашу сетевуху
ifconfig ra0 192.168.10.100 # IP может быть любым, самое важное # убеждаемся что интерфейс сконфигурирован ifconfig ra0
Теперь самое интересное!
# читаем VID iwpriv ra0 e2p 208 # ra0 e2p: # [0x0208]:0x148f
# читаем PID iwpriv ra0 e2p 20a # ra0 e2p: # [0x020A]:0x:5379
И устанавливаем новые значения
# меняем VID iwpriv ra0 e2p 208=148f # ra0 e2p: # [0x208]:148F
# меняем PID iwpriv ra0 e2p 20a=3572 # ra0 e2p: # [0x20A]:3572
Убеждаемся, что все правильно записалось командами для чтения VID/PID выше. Для большей верности отключаем адаптер, снова подключаем, и смотрим
lsusb # должно выдать что-то вроде # Bus 001 Device 014: ID 148f:3572 Ralink Technology, Corp.
Убеждаемся в правильности VID и PID. Теперь можно физически отключить сетевой адаптер и подключить к телевизору.
Телевизору надо дать немного времени (обычно не более минуты) для того, чтоб он увидел новый адаптер, например если после подключения адаптера перейти в меню настройка сети, то есть шанс увидеть привычный экран, предлагающий подключить сетевой кабель или фирменный адаптер, но к моменту когда вы докликаетесь до соседнего меню информации о сети, телевизор уже все найдет и предложит настроить беспроводную сеть.
Наслаждаемся проделанной работой!