Загрузка файлов проекта .uf2 на блок EV3 Lego через USB-кабель в Linux (Debian/Ubuntu)

Вопрос или проблема

Для начала, я знаю, что можно использовать ev3dev, но так как это для моего сына, он хочет использовать кодовые блоки, и у меня не получается заставить всё работать как надо…

Изначально была проблема с тем, что ev3 вообще не монтировался, и я смог решить её, прошив новейшую прошивку на кирпич, так что теперь он работает на версии v1.10E.

Я пробовал это на Windows, и это работает, устройство монтируется, и я могу загрузить файл на него – работает… но у моего сына нет доступа к машине с Windows, и я ищу способ заставить всё работать на Linux…

Моя конфигурация:

Система:
  Хост: pop-os Ядро: 6.9.3-76060903-generic x86_64 bits: 64
    Рабочий стол: GNOME 42.9 Дистрибутив: Pop!_OS 22.04 LTS
Машина:
  Тип: Ноутбук Система: HP Продукт: HP Laptop 14s-dq1xxx v: N/A
    серийный номер: <требуются права суперпользователя>
  Материнская плата: HP модель: 86C8 v: 56.31 серийный номер: <требуются права суперпользователя> UEFI: AMI
    v: F.11 дата: 05/22/2020
ЦП:
  Информация: четырехъядерный модель: Intel Core i5-1035G1 bits: 64 тип: MT MCP кэш:
    L2: 2 MiB
  Скорость (МГц): в среднем: 475 мин/макс: 400/3600 ядра: 1: 400 2: 400 3: 400
    4: 400 5: 400 6: 400 7: 400 8: 1000
Диски:
  Локальное хранилище: всего: 476.97 GiB использовано: 123.27 GiB (25.8%)
  ID-1: /dev/nvme0n1 производитель: Western Digital
    модель: PC SN530 SDBPNPZ-512G-1006 размер: 476.94 GiB
  ID-2: /dev/sda тип: USB модель: Linux File-CD Gadget размер: 31.7 MiB

Вот lsusb:

Шина 002 Устройство 002: ID 0bda:0411 Realtek Semiconductor Corp. Hub
Шина 002 Устройство 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Шина 001 Устройство 005: ID 13d3:56c9 IMC Networks HP TrueVision HD Camera
Шина 001 Устройство 014: ID 0694:0005 Lego Group Mindstorms EV3
Шина 001 Устройство 006: ID 0bda:b00a Realtek Semiconductor Corp. Realtek Bluetooth 4.2 Adapter
Шина 001 Устройство 004: ID 046d:c52b Logitech, Inc. Unifying Receiver
Шина 001 Устройство 002: ID 0bda:5411 Realtek Semiconductor Corp. RTS5411 Hub
Шина 001 Устройство 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Вот dmesg после подключения устройства, отфильтрованный по sda:

sudo dmesg -w | grep -i sda

[ 3648.858545] sd 1:0:0:0: [sda] 65000 512-байтных логических блоков: (33.3 МБ/31.7 МиБ)
[ 3648.858937] sd 1:0:0:0: [sda] Защита от записи отключена
[ 3648.858940] sd 1:0:0:0: [sda] Sense Mode: 0f 00 00 00
[ 3648.859497] sd 1:0:0:0: [sda] Кэш записи: включен, кэш чтения: включен, не поддерживает DPO или FUA
[ 3648.888413]  sda:
[ 3648.888446] sd 1:0:0:0: [sda] Подключён съемный диск SCSI
[ 3653.876952] FAT-fs (sda): ошибка, повреждённый каталог (неверные записи)
[ 3653.876964] FAT-fs (sda): Файловая система установлена только для чтения
[ 3653.933378] FAT-fs (sda): ошибка, fat_get_cluster: неверная цепочка кластеров (i_pos 0)

dmesg отфильтрованный по usb:

sudo dmesg -w | grep -i usb

[ 4339.097081] usb 1-2: новое высокоскоростное USB устройство номер 15 используется xhci_hcd
[ 4339.224169] usb 1-2: Найдено новое USB устройство, idVendor=0694, idProduct=0005, bcdDevice= 2.16
[ 4339.224182] usb 1-2: Новые строки USB устройства: Mfr=1, Product=2, SerialNumber=3
[ 4339.224186] usb 1-2: Продукт: EV3
[ 4339.224189] usb 1-2: Производитель: LEGO Group
[ 4339.224192] usb 1-2: Серийный номер: 001653548778
[ 4339.231695] hid-generic 0003:0694:0005.0010: hiddev0,hidraw1: USB HID v1.10 Устройство [LEGO Group EV3] на usb-0000:00:14.0-2/input0
[ 4339.232370] usb-storage 1-2:1.1: Обнаружено устройство USB Mass Storage
[ 4339.232722] scsi host1: usb-storage 1-2:1.1

Когда я запускаю fsck.fat, появляется ошибка, но я переживаю, что это “кирпич” устройство, если позволю ему сделать изменения… вот вывод:

sudo fsck.fat -v /dev/sda

fsck.fat 4.2 (2021-01-31)
Проверка доступа к последнему сектору файловой системы
Содержимое загрузочного сектора:
Системный ID "UF2 UF2 "
Медиабайт 0xf8 (жесткий диск)
       512 байтов на логический сектор
       512 байтов на кластер
         1 зарезервированный сектор
Первая FAT начинается с байта 512 (сектор 1)
         2 FAT, 16 битные записи
    130048 байтов на FAT (= 254 секторов)
Корневой каталог начинается с байта 260608 (сектор 509)
        64 записи корневого каталога
Зона данных начинается с байта 262656 (сектор 513)
     64485 кластеров данных (33016320 байтов)
1 сектор/трэка, 1 головка
         0 скрытых секторов
     64998 секторов всего
/EV3
  Содержит свободный кластер (738). Предположение о EOF.
/Projects
  Содержит свободный кластер (737). Предположение о EOF.
/dmesg.txt
  Размер файла 131072 байтов, длина цепочки кластеров больше 131072 байтов.
  Обрезка файла до 131072 байтов.
Метка тома 'EV3' хранится в корневом каталоге и метка 'EV3' хранится в загрузочном секторе и отличаются.
1) Копировать метку тома из корневого каталога в загрузочный сектор
2) Копировать метку из загрузочного сектора в корневой каталог

И вот вывод:

sudo fsck.vfat -v /dev/sda

fsck.fat 4.2 (2021-01-31)
Проверка доступа к последнему сектору файловой системы
Содержимое загрузочного сектора:
Системный ID "UF2 UF2 "
Медиабайт 0xf8 (жесткий диск)
       512 байтов на логический сектор
       512 байтов на кластер
         1 зарезервированный сектор
Первая FAT начинается с байта 512 (сектор 1)
         2 FAT, 16 битные записи
    130048 байтов на FAT (= 254 секторов)
Корневой каталог начинается с байта 260608 (сектор 509)
        64 записи корневого каталога
Зона данных начинается с байта 262656 (сектор 513)
     64485 кластеров данных (33016320 байтов)
1 сектор/трэка, 1 головка
         0 скрытых секторов
     64998 секторов всего
/EV3
  Содержит свободный кластер (738). Предположение о EOF.
/Projects
  Содержит свободный кластер (737). Предположение о EOF.
/dmesg.txt
  Размер файла 131072 байтов, длина цепочки кластеров больше 131072 байтов.
  Обрезка файла до 131072 байтов.
Метка тома 'EV3' хранится в корневом каталоге и метка 'EV3' хранится в загрузочном секторе и отличаются.
1) Копировать метку тома из корневого каталога в загрузочный сектор
2) Копировать метку из загрузочного сектора в корневой каталог
[12?q]? 

Любая помощь будет принята с благодарностью.

Ответ или решение

Для решения вопроса о загрузке .uf2 файлов проекта на EV3 Lego Brick через USB-кабель в Linux (Debian/Ubuntu), необходимо рассмотреть теоретическую часть, практическое применение и шаги по устранению обнаруженных проблем.

Теория

Lego Mindstorms EV3 — это программируемая система, которая позволяет пользователям создавать и управлять роботизированными моделями. Приобретая популярность среди образовательных учреждений и любителей робототехники, она предлагает разнообразные возможности программирования, включая использование языков, таких как блоки кода.

EV3 можно подключить к компьютеру через USB-кабель и использовать стандартное файловое управление для загрузки и управления файлами на устройстве. Однако, как показывает ваш случай, иногда возникают проблемы с распознаванием и правильной монтировкой устройства в системе на базе Linux.

Файловая система EV3, как правило, форматируется в FAT, что делает совместимость с ОС Windows легкой. Однако в Linux могут возникать определенные трудности, как, например, ошибки монтировки и изменения файловой системы в режим "только чтение".

Пример

В вашем случае устройство изначально не монтировалось, но после обновления прошивки проблема монтировки решилась, хотя возникли новые ошибки файловой системы, которые влияют на возможность записи файлов. Используя команду dmesg, вы обнаружили ошибки, связанные с файловой системой "FAT-fs", которые привели к ее изменению в режим "только чтение".

Применение

Для решения проблемы на практике, предлагаем следующий подход:

  1. Проверка правильности монтировки устройства:

    • Убедитесь, что устройство корректно монтируется. Используйте утилиты, такие как mount и lsblk, чтобы проверить, как система распознает устройство.
    • Проверьте, правильно ли устанавливается точка монтирования. Используйте sudo mount /dev/sda /mnt/ev3 (нужно заменить /dev/sda и /mnt/ev3 на ваши действительные значения) для монтировки вручную, если это необходимо.
  2. Исправление ошибок файловой системы:

    • Прежде чем исправлять ошибки файловой системы с помощью fsck, важно создать резервную копию всех данных, чтобы избежать потери данных.
    • Вы можете рискнуть устранением ошибок, так как наличие свободных кластеров и неправильное совпадение метки носителя (volume label) — это ошибки, которые fsck обычно может исправить без обнуления данных. Выполнение команд fsck.fat и fsck.vfat приведет к предложению выбрать одно из действий (1 или 2). Можно смело выбрать вариант, который скорее всего исправит метку (обратитесь к документации fsck для получения более детальной информации и тонкой настройки).
  3. Обновление программного обеспечения и драйверов:

    • Проверьте наличие обновлений для вашей операционной системы и драйверов. Обновление системы может устранить ошибки связей в ядре Linux, отвечающих за работу с USB-устройствами.
  4. Инициализация подключения EV3:

    • Убедитесь в использовании самого последнего программного обеспечения, предоставленного Lego для работы с Mindstorms EV3, даже если это означает использование open-source решений, совместимых с Linux, как альтернатива официальным.
  5. Дополнительные меры:

    • Если устройство все равно монтируется как "только для чтения", попробуйте выполнить перезагрузку устройства и повторно попробовать его смонтировать.
    • Используйте другой USB-порт или кабель, так как проблемы могут быть связаны и с физическим подключением.

Следуя этим шагам, вы сможете не только диагностировать и устранить проблему монтировки Lego EV3, но и обеспечить стабильную и функциональную среду для программирования и загрузки файлов на устройство.

Оцените материал
Добавить комментарий

Капча загружается...