Была идея сделать из андроид приставки подобие AirPlay. Подключал оптический выход приставки к оптическому входу ресивера с акустикой. Дебиан запускал с microSD и настраивал там PulseAudio для получения аудиопотока из сети и трансляцию его на оптический выход. Трансляция аудио с другой линукс машины без вопросов. С windows куча приседаний начиная от виртуальной звуковой карты, либо портированного PulseAudio, еще какой-то софт с гитхаба пробовал, всё не понравилось. Преследовали щелчки если буферизацию маленькую ставил, отставание звука от видео, отваливались клиенты если транслировал с двух источников, приставка не справлялась с передискретизацией аудио, и другие "прелести". Тогда отложил эту идею в долгий ящик, даже не опробовав трансляцию со смартфона. Ваша статья пробудила воспоминания, надо будет опять изучить вопрос.
Такой вариант предусмотрен, в ответ отправляется 302 Temporary Redirect.
Там еще есть предложение использовать в качестве IP адреса 8.8.8.8 ссылаясь на жестко заданный адрес DNS сервера в андроид. Но это получается то же самое, что и любой глобальный адрес. И не понятно что же тут конкретно сработало. А вот как перенаправить пакет с DNS запросом в адрес 8.8.8.8 на локальный DNS сервер на 192.168. на esp32 я чёт с наскока не придумаю.)
Касательно перехвата запросов, DNS server из примеров esp32 перехватывает вообще все запросы, в логах это видно. Это дело я первым делом проверил. Потом обратил внимание, что если адрес локальный у портала, то в настройках Wi-Fi в смартфоне есть кнопка "требуется настройка" (могу путать, уже подзабыл) и она ведет на портал, но сам портал, при подключении к точке доступа, не выскакивает. Если найдется в будущем решение этой заморочки, то я изменю адрес на локальный.
WiFiManager - отличный проект, он использует фреймворк Arduino, я фреймворк Arduino не использую. Есть еще менеджер Wi-Fi https://github.com/tonyp7/esp32-wifi-manager тоже очень хороший проект, использует парадигму очередей сообщений и базовый фреймворк ESP-IDF. Из-за этого исходники читаются не очевидно и кое где не используются возможности ESP-IDF фреймворка. Там некрасиво (по моему скромному мнению) написан обработчик http запросов. Ещё esp32-wifi-manager всегда запускается в полном объеме, с вебсервером, с очередями. Я решил чуток все это исправить и остановиться уже не смог.) Но за то изучил html с css и JS.
Такое поведение Captive Portal наблюдается на всех локальных адресах, на указанных вами Captive Portal тоже автоматически не вылезает. Поискал опять, и опять ничего толкового не нашел.
С андроид смартфонов Captive Portal на локальных адресах типа 192.168.4.1 сам не выскакивает. Но если адрес назначить глобальный, типа 200.200.200.1, то Captive Portal на андроид смартфоне выскочит сам. Исследовал этот вопрос пока писал https://github.com/uqfus/esp32-wifi-provision-care для esp32. С чем связано могу только догадываться, на стэкексчендже такое решение нашел без указания на источник, а конкретных руководящих документов на этот счет не нашел.
... только необходимо изучить язык разметки html, изучить стили css, ну и javascript. Учитывая их "совершенно не строгую типизацию" переменных, разработка интерфейса скатывается в "добавил свойство в css, перегрузил страницу в браузере, с удивлением обнаружил, что свойство не применимо в текущем контексте". Лыко и мочало начинай с начала. Но наше "наиболее" перевешивает все.
Стоит посмотреть сколько процессов вообще крутится на ESP32 uxTaskGetNumberOfTasks. У меня 11 показывает в скетче осуществляющем только соединение Wi-Fi.
Вы очень болезненно отреагировали на мой комментарий. Я тоже на критику болезненно реагировал сразу после вуза.)
Если вы пишете для себя то пишите как вам удобно и как вам красиво. А если пишете для других людей, а опубликованная статья подразумевает, что вы написали этот код не только для себя, то пишите код так, чтобы другим людям было приятно его читать. А то получится, что вы "изобрели вечный двигатель открытого типа", но никто не смог в документации разобраться как он работает.
Касательно комментирования кода. Многие имена переменных совершенно ни о чем не говорят при первом взгляде, когда в голове еще нет контекста. Я бы даже предложил провести минификацию исходного кода, и меньше объема занимать будет, и читаемость не ухудшится.)
О магических константах - 42. Вы сразу же должны понять что это за константа такая.)
Блокировки побудили меня наконец-то подключиться к туннельному брокеру и получить IPv6. В принципе настройки просты, но есть подводные камни. Конкретно у меня конфиг от туннельного брокера сразу не заработал, надо было убрать одну строку. Зато после запуска порадовала магия SLAAC. На всех компьютерах, виртуальных машинах, смартфонах, планшетах, умной колонке, и даже устройствах умного дома - появился IPv6 адрес. Проверил, все они стали доступны извне. Ютюб тоже стал загружаться.
Оптический кабель приходит в роутер от провайдера, и этот роутер работает в режиме бриджа. Просто роутер от провайдера устарел, но как преобразователь оптики в медь работает великолепно. Далее медным патчкордом до роутера основного. Потом медным патчкордом до сервера. На сервере крутится виртуалка. В виртуалке настроен сетевой интерфейс, создан туннельный интерфейс до туннельного брокера, настроен и запущен демон SLAAC. Ну и везде включена маршрутизация пакетов IPv6. Вот такая матрешка, работающая матрешка.
Инженер, с большой буквы Инженер, гадостей от железа никогда не ожидает, у него все по регламенту. Джуны, которых допустили "поковырять" сервер, являются еще личинками инженеров и допущены с одной целью - показать себя. После Инженер поставит оценку выполненной работе, очистит сервер от всего, и накатит систему по регламенту. Если у вас в организации нету инструкций и регламентов, то извините вас нельзя допускать к работам.
Не выдумывайте странные форсмажоры типа "через сотни лет не сможет загрузиться", "рухнет питание цод Tier3", "Ты туда не ходи, ты сюда ходи. Кирпич башка попадёт, что тогда будет?" это просто смешно.
Создать на HDD три раздела, на третьем сделать pvcreate, добавить его к существующей группе vgextend, затем заняться уменьшением томов lvresize и все такое, переместить тома на HDD pvmove, удалить из группы vgreduce NVME.
Виртуозы делают эту процедуру без выведения сервера из работы. LVM написан админами для админов.
В windows 11 есть утилита tar.exe, и она даже по умолчанию пишет в \\.\tape0. Но все мои приседания в надежде записать этой утилитой картридж из windows упиралось в ошибку. Пробовал LTO3 LTO6 win10 win11 win7. Так что для получения радости от записи картриджа линукс наше все. Данные пишу не крупными кусками. После перемотки в конец данных на ленте дописываются новые файлы около 250Гб | tar | mbuffer - буферизация в ОЗУ | лента. Для LTO6 250Гб это минуты 23. Для статистики можно запрашивать smart от привода. Можно запрашивать информацию о картридже lto-info(на гитхабе нашел) sg_read_attr тоже какую-то статистику дает.
Скрытый текст
Opening device /dev/nst0 Checking whether device is ready Unit is ready Device /dev/nst0 opened Generic SCSI-2 tape (114) Residual count: 0 Device registers: 5a000000 Status registers: 41010000 BOT ONLINE IM_REP_EN Error register: 0 Possibly inaccurate: Current file: 0 Current block number: 0
Reading attribute 41/41... Drive information: Vendor : HP Model : Ultrium 6-SCSI Firmware: J5EZ Medium information: Cartridge Type: 0x00 - Data cartridge Medium format : 0x5a - LTO-6 Formatted as : 0x5a - LTO-6 Assign. Org. : LTO-CVE Manufacturer : FUJIFILM Serial No : EU0NUX6EDJ Manuf. Date : 2015-01-21 (roughly 9.7 years ago) Tape length : 846 meters Tape width : 12.7 mm MAM Capacity : 16384 bytes (3062 bytes remaining) Format specs: Capacity : 2500 GB native - 6250 GB compressed with a 2.5:1 ratio R/W Speed : 160 MB/s native - 400 MB/s compressed Partitions: 4 max partitions supported Phy. specs: 4 bands/tape, 34 wraps/band, 16 tracks/wrap, 2176 total tracks Duration : 4h20 to fill tape with 136 end-to-end passes (115 seconds/pass) Usage information: Data written - alltime: 7743077 MiB ( 7561.60 GiB, 7.38 TiB) Data read - alltime: 4251445 MiB ( 4151.80 GiB, 4.05 TiB) Data written - session: 0 MiB ( 0.00 GiB, 0.00 TiB) Data read - session: 0 MiB ( 0.00 GiB, 0.00 TiB) Previous sessions: Session N-0: Used in a device of vendor HP (serial HUJ5032VVL) Session N-1: Used in a device of vendor HP (serial HUJ5032VVL) Session N-2: Used in a device of vendor HP (serial HUJ5032VVL) Session N-3: Used in a device of vendor HP (serial HUJ5032VVL)
Cartridge Memory Info =====================
Attribute values:
Remaining capacity in partition [MiB]: 845290
Maximum capacity in partition [MiB]: 2499053
TapeAlert flags: 0
Load count: 50
MAM space remaining [B]: 3062
Assigning organization: LTO-CVE Format density code: 0x5a
Initialization count: 1
Volume identifier: Volume change reference: 0x35d
Density vendor/serial number at last load: HP HUJ5032VVL
Density vendor/serial number at load-1: HP HUJ5032VVL
Density vendor/serial number at load-2: HP HUJ5032VVL
Density vendor/serial number at load-3: HP HUJ5032VVL
Total MiB written in medium life: 7978544
Total MiB read in medium life: 4251445
Total MiB written in current/last load: 235466
Total MiB read in current/last load: 0
Logical position of first encrypted block: [ff]
Logical position of first unencrypted block - after first encrypted block: [ff]
Medium manufacturer: FUJIFILM
Medium serial number: EU0NUX6EDJ
Medium length [m]: 846
Medium width [0.1 mm]: 127
Assigning organization: LTO-CVE
Medium density code: 0x5a
Medium manufacture date: 20150121
MAM capacity [B]: 16384
Medium type: 0x0 Medium type information: 0x0 Vendor specific medium attribute 0x1000: 00 9d 70 92 25 47 36 41 42 4d 4b 4d 36 46 55 4a 49 .p.%G6ABMKM6FUJI 10 46 49 4c 4d 00 02 ad bc 00 20 00 00 FILM..... .. Vendor specific medium attribute 0x1001: 00 9d 70 92 25 47 36 41 42 4d 4b 4d 36 45 55 30 4e .p.%G6ABMKM6EU0N 10 55 58 36 45 44 4a 00 20 UX6EDJ.
Error Correction Info =====================
smartctl 7.3 2022-02-28 r5338 [x86_64-linux-6.1.0-25-amd64] (local build) Copyright (C) 2002-22, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION === Vendor: HP Product: Ultrium 6-SCSI Revision: J5EZ Compliance: SPC-4 Logical Unit id: 0x5001438031b064f2 Serial number: HUJ5032VVL Device type: tape Transport protocol: Fibre channel (FCP-4) Local Time is: Wed Oct 2 23:49:44 2024 MSK Temperature Warning: Disabled or Not Supported
=== START OF READ SMART DATA SECTION === TapeAlert Supported Current Drive Temperature: 41 C Drive Trip Temperature:
Моторы привода ленты сильно греются, при установке в обычный ATX корпус нужен выделенный кулер рядом. Поэтому выбираем внешний LTO привод. Если стример перегреется, то сработает защита, запись останавливается, и продолжается при остывании. Внешний привод можно отключить и положить в коробку - не сосет лишнюю пыль. SAS HBA стоят дороже и требуют охлаждения, FC чуть меньше греется, и обходится корпусным вентилятором. Так что если нет SAS жестких дисков и не планируется, то FC будет дешевле, и кабель FC тоже будет дешевле. Разбираться только в кабелях придется, есть пассивные медные, активные оптические монолитные, есть SFP модули под многомодовое оптоволокно. Оптическим волокном привод можно в соседний подъезд поставить.
На ESP32 беспроводно смотрю логи через телнет https://github.com/h2zero/esp-libtelnet - Remote console over telnet for esp32 devices. Можете там почерпнуть идею о перенаправлении stdout и stderr.
Была идея сделать из андроид приставки подобие AirPlay. Подключал оптический выход приставки к оптическому входу ресивера с акустикой. Дебиан запускал с microSD и настраивал там PulseAudio для получения аудиопотока из сети и трансляцию его на оптический выход. Трансляция аудио с другой линукс машины без вопросов. С windows куча приседаний начиная от виртуальной звуковой карты, либо портированного PulseAudio, еще какой-то софт с гитхаба пробовал, всё не понравилось. Преследовали щелчки если буферизацию маленькую ставил, отставание звука от видео, отваливались клиенты если транслировал с двух источников, приставка не справлялась с передискретизацией аудио, и другие "прелести". Тогда отложил эту идею в долгий ящик, даже не опробовав трансляцию со смартфона. Ваша статья пробудила воспоминания, надо будет опять изучить вопрос.
Картинка с кабелями сгенерирована. Текст не читаем.
Огорчает (немножечко) отсутствие ASIC майнеров околокиловаттной мощности. Три киловатта это много.
Такой вариант предусмотрен, в ответ отправляется 302 Temporary Redirect.
Там еще есть предложение использовать в качестве IP адреса 8.8.8.8 ссылаясь на жестко заданный адрес DNS сервера в андроид. Но это получается то же самое, что и любой глобальный адрес. И не понятно что же тут конкретно сработало. А вот как перенаправить пакет с DNS запросом в адрес 8.8.8.8 на локальный DNS сервер на 192.168. на esp32 я чёт с наскока не придумаю.)
Касательно перехвата запросов, DNS server из примеров esp32 перехватывает вообще все запросы, в логах это видно. Это дело я первым делом проверил. Потом обратил внимание, что если адрес локальный у портала, то в настройках Wi-Fi в смартфоне есть кнопка "требуется настройка" (могу путать, уже подзабыл) и она ведет на портал, но сам портал, при подключении к точке доступа, не выскакивает. Если найдется в будущем решение этой заморочки, то я изменю адрес на локальный.
WiFiManager - отличный проект, он использует фреймворк Arduino, я фреймворк Arduino не использую. Есть еще менеджер Wi-Fi https://github.com/tonyp7/esp32-wifi-manager тоже очень хороший проект, использует парадигму очередей сообщений и базовый фреймворк ESP-IDF. Из-за этого исходники читаются не очевидно и кое где не используются возможности ESP-IDF фреймворка. Там некрасиво (по моему скромному мнению) написан обработчик http запросов. Ещё esp32-wifi-manager всегда запускается в полном объеме, с вебсервером, с очередями. Я решил чуток все это исправить и остановиться уже не смог.) Но за то изучил html с css и JS.
Такое поведение Captive Portal наблюдается на всех локальных адресах, на указанных вами Captive Portal тоже автоматически не вылезает. Поискал опять, и опять ничего толкового не нашел.
https://github.com/esp8266/Arduino/commit/adf2b14a6a1493b324d8e176a1519af76bd7e5fb
С андроид смартфонов Captive Portal на локальных адресах типа 192.168.4.1 сам не выскакивает. Но если адрес назначить глобальный, типа 200.200.200.1, то Captive Portal на андроид смартфоне выскочит сам. Исследовал этот вопрос пока писал https://github.com/uqfus/esp32-wifi-provision-care для esp32. С чем связано могу только догадываться, на стэкексчендже такое решение нашел без указания на источник, а конкретных руководящих документов на этот счет не нашел.
Ну и касательно прошивки через подключение устройства через USB, вам не лень подключать, и отключать, приносить, и уносить esp32? Можно добавить обработчик POST запроса и прошивать устройство по сети с использованием curl. Пример тут смотрите https://github.com/uqfus/esp32-wifi-provision-care/tree/main/examples/esp32-firmware-upload-ota-example
... только необходимо изучить язык разметки html, изучить стили css, ну и javascript. Учитывая их "совершенно не строгую типизацию" переменных, разработка интерфейса скатывается в "добавил свойство в css, перегрузил страницу в браузере, с удивлением обнаружил, что свойство не применимо в текущем контексте". Лыко и мочало начинай с начала. Но наше "наиболее" перевешивает все.
Стоит посмотреть сколько процессов вообще крутится на ESP32 uxTaskGetNumberOfTasks. У меня 11 показывает в скетче осуществляющем только соединение Wi-Fi.
Добавил анимации к кнопке по гайду https://habr.com/ru/companies/netologyru/articles/655337/ и получилось красиво.
Вы очень болезненно отреагировали на мой комментарий. Я тоже на критику болезненно реагировал сразу после вуза.)
Если вы пишете для себя то пишите как вам удобно и как вам красиво. А если пишете для других людей, а опубликованная статья подразумевает, что вы написали этот код не только для себя, то пишите код так, чтобы другим людям было приятно его читать. А то получится, что вы "изобрели вечный двигатель открытого типа", но никто не смог в документации разобраться как он работает.
Касательно комментирования кода. Многие имена переменных совершенно ни о чем не говорят при первом взгляде, когда в голове еще нет контекста. Я бы даже предложил провести минификацию исходного кода, и меньше объема занимать будет, и читаемость не ухудшится.)
О магических константах - 42. Вы сразу же должны понять что это за константа такая.)
Блокировки побудили меня наконец-то подключиться к туннельному брокеру и получить IPv6. В принципе настройки просты, но есть подводные камни. Конкретно у меня конфиг от туннельного брокера сразу не заработал, надо было убрать одну строку. Зато после запуска порадовала магия SLAAC. На всех компьютерах, виртуальных машинах, смартфонах, планшетах, умной колонке, и даже устройствах умного дома - появился IPv6 адрес. Проверил, все они стали доступны извне. Ютюб тоже стал загружаться.
Оптический кабель приходит в роутер от провайдера, и этот роутер работает в режиме бриджа. Просто роутер от провайдера устарел, но как преобразователь оптики в медь работает великолепно. Далее медным патчкордом до роутера основного. Потом медным патчкордом до сервера. На сервере крутится виртуалка. В виртуалке настроен сетевой интерфейс, создан туннельный интерфейс до туннельного брокера, настроен и запущен демон SLAAC. Ну и везде включена маршрутизация пакетов IPv6. Вот такая матрешка, работающая матрешка.
Лапша из if не читаема. Воспользовались бы switch-case вариантом.
Велосипедов полон код. Особенно доставило ваше "!0".
С комментариями переборщили, следует писать код так чтобы он был понятен с минимумом комментариев.
"Магических" констант в коде не должно быть, ваша переменная SostWiFi постоянно сравнивается с этими "магическими" константами.
Писал captive portal для esp32, подключил фреймворк бутстрап через CDN, запустил и... тут-то до меня дошло, что на esp32 интернета-то ещё пока нету.)
А есть что где почитать подробнее? Гуглится только "пирогенетическая переработка древесины" но там кислоты на выходе, да и катализаторов никаких нет?
Я бы на вашем месте пошел бы ещё дальше. Убрал бы ворота совсем. Нет ворот нет проблем.)
Инженер, с большой буквы Инженер, гадостей от железа никогда не ожидает, у него все по регламенту. Джуны, которых допустили "поковырять" сервер, являются еще личинками инженеров и допущены с одной целью - показать себя. После Инженер поставит оценку выполненной работе, очистит сервер от всего, и накатит систему по регламенту. Если у вас в организации нету инструкций и регламентов, то извините вас нельзя допускать к работам.
Не выдумывайте странные форсмажоры типа "через сотни лет не сможет загрузиться", "рухнет питание цод Tier3", "Ты туда не ходи, ты сюда ходи. Кирпич башка попадёт, что тогда будет?" это просто смешно.
Создать на HDD три раздела, на третьем сделать pvcreate, добавить его к существующей группе vgextend, затем заняться уменьшением томов lvresize и все такое, переместить тома на HDD pvmove, удалить из группы vgreduce NVME.
Виртуозы делают эту процедуру без выведения сервера из работы. LVM написан админами для админов.
В windows 11 есть утилита tar.exe, и она даже по умолчанию пишет в \\.\tape0. Но все мои приседания в надежде записать этой утилитой картридж из windows упиралось в ошибку. Пробовал LTO3 LTO6 win10 win11 win7. Так что для получения радости от записи картриджа линукс наше все. Данные пишу не крупными кусками. После перемотки в конец данных на ленте дописываются новые файлы около 250Гб | tar | mbuffer - буферизация в ОЗУ | лента. Для LTO6 250Гб это минуты 23. Для статистики можно запрашивать smart от привода. Можно запрашивать информацию о картридже lto-info(на гитхабе нашел) sg_read_attr тоже какую-то статистику дает.
Скрытый текст
Opening device /dev/nst0
Checking whether device is ready
Unit is ready
Device /dev/nst0 opened
Generic SCSI-2 tape (114)
Residual count: 0
Device registers: 5a000000
Status registers: 41010000
BOT ONLINE IM_REP_EN
Error register: 0
Possibly inaccurate:
Current file: 0
Current block number: 0
Reading attribute 41/41...
Drive information:
Vendor : HP
Model : Ultrium 6-SCSI
Firmware: J5EZ
Medium information:
Cartridge Type: 0x00 - Data cartridge
Medium format : 0x5a - LTO-6
Formatted as : 0x5a - LTO-6
Assign. Org. : LTO-CVE
Manufacturer : FUJIFILM
Serial No : EU0NUX6EDJ
Manuf. Date : 2015-01-21 (roughly 9.7 years ago)
Tape length : 846 meters
Tape width : 12.7 mm
MAM Capacity : 16384 bytes (3062 bytes remaining)
Format specs:
Capacity : 2500 GB native - 6250 GB compressed with a 2.5:1 ratio
R/W Speed : 160 MB/s native - 400 MB/s compressed
Partitions: 4 max partitions supported
Phy. specs: 4 bands/tape, 34 wraps/band, 16 tracks/wrap, 2176 total tracks
Duration : 4h20 to fill tape with 136 end-to-end passes (115 seconds/pass)
Usage information:
Data written - alltime: 7743077 MiB ( 7561.60 GiB, 7.38 TiB)
Data read - alltime: 4251445 MiB ( 4151.80 GiB, 4.05 TiB)
Data written - session: 0 MiB ( 0.00 GiB, 0.00 TiB)
Data read - session: 0 MiB ( 0.00 GiB, 0.00 TiB)
Previous sessions:
Session N-0: Used in a device of vendor HP (serial HUJ5032VVL)
Session N-1: Used in a device of vendor HP (serial HUJ5032VVL)
Session N-2: Used in a device of vendor HP (serial HUJ5032VVL)
Session N-3: Used in a device of vendor HP (serial HUJ5032VVL)
Cartridge Memory Info =====================
Attribute values:
Remaining capacity in partition [MiB]: 845290
Maximum capacity in partition [MiB]: 2499053
TapeAlert flags: 0
Load count: 50
MAM space remaining [B]: 3062
Assigning organization: LTO-CVE Format density code: 0x5a
Initialization count: 1
Volume identifier: Volume change reference: 0x35d
Density vendor/serial number at last load: HP HUJ5032VVL
Density vendor/serial number at load-1: HP HUJ5032VVL
Density vendor/serial number at load-2: HP HUJ5032VVL
Density vendor/serial number at load-3: HP HUJ5032VVL
Total MiB written in medium life: 7978544
Total MiB read in medium life: 4251445
Total MiB written in current/last load: 235466
Total MiB read in current/last load: 0
Logical position of first encrypted block: [ff]
Logical position of first unencrypted block - after first encrypted block: [ff]
Medium manufacturer: FUJIFILM
Medium serial number: EU0NUX6EDJ
Medium length [m]: 846
Medium width [0.1 mm]: 127
Assigning organization: LTO-CVE
Medium density code: 0x5a
Medium manufacture date: 20150121
MAM capacity [B]: 16384
Medium type: 0x0 Medium type information: 0x0 Vendor specific medium attribute 0x1000: 00 9d 70 92 25 47 36 41 42 4d 4b 4d 36 46 55 4a 49 .p.%G6ABMKM6FUJI 10 46 49 4c 4d 00 02 ad bc 00 20 00 00 FILM..... .. Vendor specific medium attribute 0x1001: 00 9d 70 92 25 47 36 41 42 4d 4b 4d 36 45 55 30 4e .p.%G6ABMKM6EU0N 10 55 58 36 45 44 4a 00 20 UX6EDJ.
Error Correction Info =====================
smartctl 7.3 2022-02-28 r5338 [x86_64-linux-6.1.0-25-amd64] (local build) Copyright (C) 2002-22, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Vendor: HP
Product: Ultrium 6-SCSI
Revision: J5EZ
Compliance: SPC-4
Logical Unit id: 0x5001438031b064f2
Serial number: HUJ5032VVL
Device type: tape
Transport protocol: Fibre channel (FCP-4)
Local Time is: Wed Oct 2 23:49:44 2024 MSK
Temperature Warning: Disabled or Not Supported
=== START OF READ SMART DATA SECTION ===
TapeAlert Supported
Current Drive Temperature: 41 C
Drive Trip Temperature:
Error counter log:
Errors Corrected by Total Correction Gigabytes Total
ECC rereads/ errors algorithm processed uncorrected
fast | delayed rewrites corrected invocations [10^9 bytes] errors
read: 0 0 0 0 0 0.000 0
write: 13 0 0 0 25 0.000 0
Device does not support Self Test logging
Моторы привода ленты сильно греются, при установке в обычный ATX корпус нужен выделенный кулер рядом. Поэтому выбираем внешний LTO привод. Если стример перегреется, то сработает защита, запись останавливается, и продолжается при остывании. Внешний привод можно отключить и положить в коробку - не сосет лишнюю пыль. SAS HBA стоят дороже и требуют охлаждения, FC чуть меньше греется, и обходится корпусным вентилятором. Так что если нет SAS жестких дисков и не планируется, то FC будет дешевле, и кабель FC тоже будет дешевле. Разбираться только в кабелях придется, есть пассивные медные, активные оптические монолитные, есть SFP модули под многомодовое оптоволокно. Оптическим волокном привод можно в соседний подъезд поставить.
На ESP32 беспроводно смотрю логи через телнет https://github.com/h2zero/esp-libtelnet - Remote console over telnet for esp32 devices. Можете там почерпнуть идею о перенаправлении stdout и stderr.