Форум vvm

Главная категория => Онлайн кассы => Штрих-М => Тема начата: lichtblick от 28 Мая 2019, 17:54:02

Название: ШТРИХ-ON-LINE прошивка через DFU под Linux
Отправлено: lichtblick от 28 Мая 2019, 17:54:02
Доброе время суток, уважаемые.

Имеется: ШТРИХ-ON-LINE 20.12.17, загрузчик 133.
Задача: прошить под Linux bootloader v145 и firmware_KKT_24_10_18.

Кто-нибудь прошивал сабж или похожий аппарат под Linux с помощью dfu-util или через Штриховский Тест Драйвера (.749) ?

Попытался (очень рискуя, конечно) прошить Тестом драйвера (под Wine) загрузчик. К сожалению, лог не нашёл нигде, но после успешной заливки прошивки, там в строчке вылезла ошибка 75 (кажется) и текст, что невозможно найти DFU-устройство, отвалилось, в-общем. К счастью, никто не пострадал, аппарат вышел из DFU и горит зелёная лампочка.

Второй заход с помощью dfu-util: https://sourceforge.net/projects/dfu-util/files/dfu-util-0.8-binaries/ на которую ссылаются сами Штрихи.
Однако, что-то боюсь шить, попытался для начала прочитать прошивку:

Спойлер
sudo ./dfu-util -vU test.fw
dfu-util 0.8

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2014 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to dfu-util@lists.gnumonks.org

Opening DFU capable USB device...
ID 1fc9:0089
Run-time device DFU version 0100
Claiming USB DFU Interface...
Setting Alternate Setting #0 ...
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 0100
Device returned transfer size 2048
Copying data from DFU device to PC
Upload  [                         ]   0%            0 bytesdfu-util: Error during upload

Failed.
Received a total of 0 bytes
Непонятно, то ли чтение аппаратно заблокировано, то ли Тест дравера порт не отпускает, т.к. перевожу в режим DFU через нее (FE ED 00 00 00 00), иначе не знаю как. Пытался и быстро закрывать Тест драйвера перевода кассы в DFU, всё равно так.
Если никто не натолкнёт на мысли правильные, всё-таки попытаюсь зашить загрузчик на свой страх и риск.

Если кто подкинет идей, буду премного благодарен.
Название: Re: ШТРИХ-ON-LINE прошивка через DFU под Linux
Отправлено: Serj от 28 Мая 2019, 18:52:40
145 загрузчик лучше вообще не шить, 133 работает хорошо со всеми версиями прошивок. Upload нельзя сделать в принципе - заблокировано. Пробуй шить через линуксовый dfu прошивку. Загрузчик лучше оставить 133. Прошивку даже если неудачно зашьешь - ничего страшного.
Название: Re: ШТРИХ-ON-LINE прошивка через DFU под Linux
Отправлено: got10 от 28 Мая 2019, 21:49:44
SD CARD в нём есть?
Название: Re: ШТРИХ-ON-LINE прошивка через DFU под Linux
Отправлено: lichtblick от 29 Мая 2019, 14:15:10
145 загрузчик лучше вообще не шить, 133 работает хорошо со всеми версиями прошивок. Upload нельзя сделать в принципе - заблокировано. Пробуй шить через линуксовый dfu прошивку. Загрузчик лучше оставить 133. Прошивку даже если неудачно зашьешь - ничего страшного.
Понял, оставим 133-й. А перевод в DFU-режим *программно* только через FE ED 00 00 00 00 в "Тесте драйвера"? dfu-util не умеет этого?

SD CARD в нём есть?
Нет, судя по всему. Аппараты я не разбирал, есть там картовод или нет мне неизвестно, но, в любом случае, задача стоит отработать обновление на удалённых точках через интернет. Персонал на местах не обладает квалификацией для разбора-сбора аппарата и установки карты, поэтому этот вариант не рассматривается.
Название: Re: ШТРИХ-ON-LINE прошивка через DFU под Linux
Отправлено: got10 от 29 Мая 2019, 14:45:38
Может сервер обновлений прописать и через тест драйвера ?
Название: Re: ШТРИХ-ON-LINE прошивка через DFU под Linux
Отправлено: lichtblick от 29 Мая 2019, 17:24:42
Может сервер обновлений прописать и через тест драйвера ?
Думаю, что Тест драйвера так же отвалится при попытке записи, как у меня уже было. Наверняка он пытается что-то сделать с устройством перед прошивкой, но ему это не удаётся, потому что он под wine запущен и реальное устройство /dev/ttyACM просто не реагирует или отвечает неадекватно. В-общем, завтра постараюсь попробовать через dfu-util прошить 24-10-2018, если всё получится, то меня устроит этот вариант, терминал запустить не проблема (есть и x11vnc и xrdp, да и ssh почти везде прокинут), залить на удалённый хост крошечную dfu-util тоже.
Название: Re: ШТРИХ-ON-LINE прошивка через DFU под Linux
Отправлено: procesor от 29 Мая 2019, 21:13:13
SD CARD в нём есть?
Нет, судя по всему. Аппараты я не разбирал, есть там картовод или нет мне неизвестно, но, в любом случае, задача стоит отработать обновление на удалённых точках через интернет. Персонал на местах не обладает квалификацией для разбора-сбора аппарата и установки карты, поэтому этот вариант не рассматривается.
подключите по ком порту прошейте,можно удаленно, Tera Term на винде Вам в помощь!!!
Название: Re: ШТРИХ-ON-LINE прошивка через DFU под Linux
Отправлено: got10 от 29 Мая 2019, 21:13:50
Человек хочет именно по USB и под линуксом.
Название: Re: ШТРИХ-ON-LINE прошивка через DFU под Linux
Отправлено: procesor от 29 Мая 2019, 21:17:37
Человек хочет именно по USB и под линуксом.
Человек хочет сэкономить ,не хочет платить спецам чтоб приехали и сделали))или по удаленке))
Название: Re: ШТРИХ-ON-LINE прошивка через DFU под Linux
Отправлено: got10 от 29 Мая 2019, 21:54:25
Всё можно самому (с).
Название: Re: ШТРИХ-ON-LINE прошивка через DFU под Linux
Отправлено: lichtblick от 30 Мая 2019, 15:21:52
Напомню, что в сети то ли сами Штрихи, то ли аффилированные специалисты дают ссылку на опенсорсную dfu-util и упоминают линукс в качестве платформы, пригодной для обновления. Но вот подробностей я не нашёл.

Поскольку есть нюансы, маленькое howto:

Обновление прошивки ШТРИХ-ON-LINE под Linux

Использовался старый комп с установленной ОС: 4.15.0-50-generic #54~16.04.1-Ubuntu (Ubuntu 16.04 LTS x64).
Все обновления установлены.
Всё операции проводились только через vnc и ssh.
На компе есть 2 юзера, админ и обычный (продавец в реальности на торговой точке).
В моём случае нужен тест драйвера на раб.столе продавца, поэтому у меня wine установлен в профиле "продавца" (wine ставится под каждого юзера отдельно, да, есть префиксы, но мне так удобнее) и запускаю я его под "продавцом"

1. Подключаемся к машине через vnc, устанавливаем DrvFR_4.14_749.exe (нужна только первая галка в опциях установки)

Тут без разницы, работать через vnc или ssh, что удобнее.
2. Добавляем юзера в группу dialout: sudo adduser <your_username> dialout
3. Прописываем ком-порты для wine:
смотрим порты:
sudo dmesg | grep tty
Наш VCOM (касса должна быть не в режиме RNDIS!) должен первично определиться как ttyACM0.
Прописываем под юзером из под которого будем запускать Тест драйвера!
Прописываем: ln -s /dev/ttyACM0 ~/.wine/dosdevices/com1
и запасной (потом появится): ln -s /dev/ttyACM1 ~/.wine/dosdevices/com2
Открываем "реестр" и прописываем в нём: nano ~/.wine/system.reg
сразу после #arch=win64 добавить:
[Hardware\\Devicemap\\Serialcomm] 1231984861
"Serial0"="COM1"
"Serial1"="COM2"
На этом настройка wine закончена, но необходимо перелогинить юзера из-за добавления его в группу dialout. Выходим и заходим заново.

4. Теперь dfu-util. Скачиваем только один файлик dfu-util по ссылке: https://sourceforge.net/projects/dfu-util/files/dfu-util-0.8-binaries/linux-i386/dfu-util/download
Можно из консоли, можно закинуть через scp, как удобнее.
Теперь туда же надо закинуть файл прошивки.
Я работал через ssh под админ аккаунтом.
переходим в рабочую папку: cd /dfu
Всё готово.

Теперь сама прошивка.

Одно окно ГУИ через vnc с залогиненным "продавцом", другое окно ssh c залогиненным админом (в правами sudo). Можно делать всё из vnc, там открыть терминал и стать админом (su admin/root и т.д.)
5. Запускаем Тест драйвера, настраиваем подключение: COM1/115200. проверяем - Проверка связи.
6. Сохраняем таблицы: Таблицы-Импорт/Экпорт-Прочитать-Сохранить
7. Переходим в раздел 17.Прочее - Команда. Вводим "FE ED 00 00 00 00" без кавычек, - Передать. касса переходит в режим DFU и зажигает красную лампочку на 30 сек.
8. Переключаемся в окно терминала и вводим: sudo ./dfu-util -D upd_app.bin
У меня выдало следующее:
dfu-util 0.8

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2014 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to dfu-util@lists.gnumonks.org

dfu-util: Invalid DFU suffix signature
dfu-util: A valid DFU suffix will be required in a future dfu-util release!!!
Opening DFU capable USB device...
ID 1fc9:0089
Run-time device DFU version 0100
Claiming USB DFU Interface...
Setting Alternate Setting #0 ...
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 0100
Device returned transfer size 2048
Copying data from PC to DFU device
Download        [=========================] 100%       491520 bytes
Download done.
state(2) = dfuIDLE, status(0) = No error condition is present
Done!
9. У кассы красная лампочка начинает мигать, кассе требуется техобнуление.
На этом этапе прежний USB-интерфейс отваливается, появляется второй с новым идентификатором -  ttyACM1. Для этого мы прописывали COM2 выше.
Переключаемся в Тесте драйвера в настрйоки и выставляем COM2/4800. Проверяем связь.
10. Выполняем техобнуление. Настройка свойств - Сервис - пункты 01,02,03
11. Переключаемся в Тесте драйвера в настрйоки и выставляем COM2/115200. Загружаем обратно таблицы Таблицы-Импорт/Экпорт-Открыть-Записать.
12. (В моём случае) Переключаем USB обратно в RNDIS режим для нормальной работы магазина. Если не нужно, то после перезагрузки надо перепрописать настройки на COM1.
Название: Re: ШТРИХ-ON-LINE прошивка через DFU под Linux
Отправлено: Newkid от 31 Мая 2019, 07:50:15
Грамматная работа, вопрос кассовая программа у ва какая? И я так понимаю если касса работает через rndis то у вас настроен Forward и скорее всего маскарадинг или  SNAT.
Название: Re: ШТРИХ-ON-LINE прошивка через DFU под Linux
Отправлено: lichtblick от 31 Мая 2019, 10:46:21
Грамматная работа, вопрос кассовая программа у ва какая?
У нас самописная в виде сервиса, работа через браузер. Кроссплатформенная, работают Windows XP/7/Linux.
И я так понимаю если касса работает через rndis то у вас настроен Forward и скорее всего маскарадинг или  SNAT.
Да, маскарадинг, это считается менее производительным (ну, раньше считалось, сейчас хз) при статике, но тут трафик от кассы смехотворный, нагрузка минимальная.
В-общем, одна строчка в iptables: iptables -t nat -A POSTROUTING -o "$adaptercfg" -j MASQUERADE
Работает идеально, в отличие от винды, где Штрихам пришлось нагородить ofdproxy, чтобы всё работало нормально.
Название: Re: ШТРИХ-ON-LINE прошивка через DFU под Linux
Отправлено: lichtblick от 23 Июля 2019, 13:33:45
Штрихи, красавцы, изгадили Тест драйвера, крайняя версия DrvFR_4_14_772 не работает под Wine.
Так что пользуемся 749-й, другие между этими не проверял.