Не сохраняются картинки и видео
Что только не делал, как только не настраивал, не сохраняется ничего в память и все! В чем проблема?
Смартфон Google Pixel 6a, чистый андроид
Что только не делал, как только не настраивал, не сохраняется ничего в память и все! В чем проблема?
Смартфон Google Pixel 6a, чистый андроид
Каждый год выпускается с десяток новых моделей одноплатных компьютеров. Свежие девайсы представляют как старые и уважаемые фирмы по типу Raspberry Pi, Orange Pi или Banana Pi, так и относительные новички на рынке — Repka Pi, или, например, Lctech Pi. Одноплатники работают на достаточно большом парке железа: кто-то использует чипы AllWinner, кто-то Amlogic, кто-то Beoadcom, а кто-то… мобильные! Пару лет назад Orange Pi отличились выпуском нескольких одноплатников на базе чипсетов очень бюджетных мобильников 2013-2015 годов — 2G IoT и 3G IoT. На данный момент, выпуск 3G IoT завершен, а компания предлагает купить абсолютно новый одноплатник с 3G, Bluetooth, Wi-Fi, GPS, поддержкой Linux и Android всего за 1.000 рублей (500 само устройство и 500 доставка). На что оно способно и стоит ли его брать — узнаем в статье!
Что за устройство?
IoT устройство уже прочно закрепились в нашей жизни. Сейчас уже есть возможность приобрести полноценный внешний GSM-модуль за пару сотен рублей, который способен будет выйти в сеть или обрабатывать SM. Однако, в мире одноплатников всё не так просто: большинство из этих устройств использует планшетные чипсеты, которые обычно не обладают встроенными модемами для работы в GSM-сетях. На помощь приходят внешние модули, но чем выше необходимое поколение связи, тем выше цена. И есть 200 рублей за 2G модуль — это совсем немного, то 3G, а тем более LTE модули могут влететь в копеечку. Конечно в мейнлайн дистрибутивах уже есть драйвера на некоторые модемы Huawei, благодаря чему можно просто воткнуть копеечный USB-свисток но это не совсем спортивно.
С весьма интересным решением пришла компания Orange Pi. Несколько лет назад они представили весьма занимательное устройство: 2G IoT, которое работало на базе давным-давно забытого мобильного чипсета RDA8810, который является родственником Spreadtrum SC6820 — чипа, который использовался в очень многих китайских ультрабюджетниках 2012-2014 годов. Устройство отличалось весьма неплохими характеристиками за низкий прайс:
Процессор: RDA8810, Cortex-A5, 1Ghz.
ОЗУ: 256 мегабайт DDR2.
ПЗУ: 512 мегабайт NAND памяти + возможность загрузки с MicroSD флэшек.
Дисплей: 40-пиновый коннектор, мимикрирующий под стандартизированный. Однако производитель предлагает свой дисплей от мобильниках втридорого, а распиновка несколько отличается от общепринятой — нужно делать переходник.
Питание: 5в от USB, до 2А нагрузки при работе с сетью, 3.7в от АКБ с встроенным контроллером питания.
Звук: Микрофон + встроенный в чипсет ЦАП для вывода звука из системы.
Интерфейсы: SPI, I2C, GPIO, UART, Wi-Fi, Bluetooth.
Причина низкой цены и хорошего функционала очень проста: Orange Pi просто взяли референсную плату ультрабюджетного смартфона за 1.500-2.000 рублей и развели из нее одноплатник, который затем начали производить. На момент выхода одноплатника, смартфоны на 8810 не производились, так что отпускная цена на чипы была копеечная, в то время как на AllWinner'ы спрос весьма хорош. Год назад они продавались по 700 рублей с учетом доставки, но сейчас их окончательно распродали и найти их можно только на вторичке.
3G IoT — следующая ветвь развития IoT линейки OPi, которая на этот раз работает на базе чипсета MediaTek и имеет полноценную поддержку 3G. По сути, возможности остались те же, однако возможности вывода на HDMI до сих пор нет — теперь производитель предлагает LVDS матрицу, опять же, втридорого. Однако схема есть, чисто теоретически есть возможно купить какой-нибудь бюджетник от ZTE/Huawei, найти схему платы и сделать переходник с шлейфа нашей матрицы на коннектор одноплатника. Драйвер матрицы можно взять в исходниках ядра и без изменений перенести. Работает девайс на базе чипа для бюджетных смартфонов, однако теперь в нашем распоряжении целых два ядра!
Характеристики девайса такие:
Процессор: 2х-ядерный MT6572, Cortex-A7, 1.2Ghz.
ОЗУ: 256мб.
ПЗУ: 512мб eMMC флэшка от Leahkinn + возможность загрузки с MicroSD.
Дисплей: MIPI DSI, LVDS.
Питание: 5в, до 2А в пике, 3.7в с контроллером питания.
Звук: всё так же, микрофон + ЦАП.
Интерфейсы: SPI, I2C, GPIO, UART, Wi-Fi, Bluetooth.
Весьма недурно, согласны? На момент выхода статьи, этот одноплатник можно заказать на всем известном сайте за 1.000 рублей — это с учетом доставки. Идет недели 3, поставляется в фирменной коробочке. Гребенка уже распаяна с завода.
Ну что-ж, предлагаю посмотреть, что может предложить нам такой одноплатник и стоит ли его вообще брать?
Накатываем систему
На выбор у нас есть Android и Linux. Учтите, что GSM стек работает только в Android! Теоретически есть возможность связаться с модемом из под Linux, но это требует дальнейшего изучения местного factory-режима. Впрочем, GSM под Android не так уж и плохо — нужное вам поведение, вероятно, можно реализовать в виде службы. Но управлять Android придется только, и только через ADB, если у вас нет дисплея.
Для установки ОС можно использовать как внутреннюю память (только Android, rootfs линукса туда не влезет), так и на MicroSD. Оба способа требуют прошивки eMMC с помощью фирменого флэшера — SP Flash Tool. Суть в том, что выбор варианта загрузки с SD/NAND реализован здесь в виде настройки точки монтирования: ядро так или иначе будет находится на eMMC, но в зависимости от выбранного образа boot, будет загружать систему с соответствующего носителя. Примерно как это реализовано здесь.
Мы будем ставить Linux: качаем SP Flash Tool, выбираем scatter-файл и ставим Format All + Download. Осторожно, форматирование сотрет NVRAM и IMEI, так что лучше сделать бэкапы (хотя их все равно можно легко перебить из системы вручную):
На первом проходе, флэшер переразметит внутреннюю память, но ругнется на отсутствующий раздел System. После этого, нужно вернуть режим Download only, снять галку с System и прошить устройство еще раз — после этого, плата будет загружаться с MicroSD:
Теперь нужно записать саму систему на флэшку. Образы записываются как обычно — берем флэшку на 4-8гб, вставляем в кард-ридер и записываем образ через Win32DiskImager. Флэшку желательно брать 10-класса, но у меня и «пятерка» работала с адекватной производительностью:
После записи, вставляем флэшку в устройство и запитываем его. Возможны варианты питания как напрямую от БП, так и от аккумулятора — в таком случае, при подключении БП, контроллер питания будет заряжать аккумулятор, а за статусом зарядки можно следить через устройство battery в /sys/class/power_supply/ (и в Linux, и в Android).
Для общения с системой через консоль, нам понадобится UART-преобразователь. Я для этого использую плату ESP32-WROOM с выпаянным чипом ESP32. Подтыкиваемся (или подпаиваемся) к UART'у, запускаем putty, ставим бодрейт 115200 и вперед наблюдать за консолью!
Настраиваем Linux
Тут ничего особо сложного нет, лишь некоторая подготовка к полноценному использованию системы. Если для вас написанное малопонятно — можете просто скопипастить, все должно работать без проблем.
Итак, система запустилась и требует логин, а кроме этого — сыпет логами в UART. Стандартный логин — root, пароль orangepi, лучше смените пароль сразу. Надоели логи? Пишем:
dmesg -n 1
Можно сразу записать эту команду в rc.local, если не хотите после каждого ребута писать команду по новой.
После этого, нам нужно настроить Wi-Fi. В системе предустановлен wpa_supplicant, поэтому для подключения мы идем в /etc/network/ и редактируем с помощью nano файл interfaces:
nano interfaces
... Дописываем
auto wlan0
iface wlan0 inet dhcp
wpa-ssid "Имя вашей сети"
wpa-psk "Пароль вашей сети"
Жмем Ctrl + X, сохраняем и перезапускаем сервис networking service networking restart Возникли проблемы? wpa_supplicant жалуется на существующий контекст? Удаляем wpa_supplicant из /run/, если все равно не работает - отправляем систему в ребут, должно заработать.
Имейте ввиду: плата без проблем питается от стандартных 5В/0.5А USB-порта ПК, но если подключить к ней USB-устройство во время работы — то плата начнет уходить в ребут при попытке поднять Wi-Fi, даже если вытащить флэшку. Лечится легко: обесточиваем плату, затем включаем снова.
Подключиться можно хоть к точке Wi-Fi от вашего смартфона, дабы объединить их в локальную сеть. Тогда с помощью VNC можно будет вывести изображение с одноплатника на экран разбитого сяоми — чем не применение старому гаджету? Пингуем гугл, сеть есть — отлично!
Теперь ставим icewm из репозиториев, tightvnc и пошло поехало… ан нет! Debian Stretch уже выкинули из официальных репозиториев, перенеся его в архив. Пользовались старыми версиями убунты/дебиана? Тогда следующая операция для вас будет знакома:
nano /etc/apt/sources.list...
Меняем ftp2.cn.debian.org на archive.debian.org во всех строках. Ctrl + X, сохраняем.
Пишеv apt-get update. Ждём обновления списка пакетов.
Теперь мы можем ставить официальные бинарные пакеты из репозиториев. Нам доступна куча софта, в том числе с более старших Raspberry Pi и Orange Pi — ABI то одно! Можно поставить TightVNCServer, запустить его и без проблем подключиться к нашей машинке (5900 — базовый порт, 5901 — будет для первого дисплея и.т.п).
Но сейчас у нас просто маленький и слабенький десктоп. Надо же использовать возможности одноплатника по полной, верно?
GPIO
У устройства есть гребенка с 40 пинами, часть из которых мы без проблем можем использовать для наших целей. Друзья, если вы уже имели опыт с другими одноплатниками, то знаете что для Broadcom/AllWiiner и других иных чипсетов уже есть готовые библиотеки для работы с GPIO. Под MediaTek их нет, но ничего сложного в работе с ними из user-space нет. Рассмотрим схему подробнее и два способа работы с ними:
Первый из официального мануала, подразумевает чтение и запись в специальное виртуальное устройство — mt_gpio, а вернее — в его дебаг-режим. В него можно писать хоть из shell-скрипта при желании. Виртуальное устройство расположено по пути/sys/devices/virtual/misc/mtgpio/pin. Если просто начать читать из него, то мы получим список всех пинов и их состояние:
PIN: [MODE] [PULL_SEL] [DIN] [DOUT] [PULL EN] [DIR] [INV] [IES]
0:1000000-1
1:1000000-1
...
Чтобы записать состояние, нам нужно послать специальную строку:
echo -wdout<номер пина> > 1/0
Чтобы выбрать направление пина, нам нужно послать:
echo -wdir<номер пина> > 1/0, где 0 - вход
Чтобы получить состояние пина, нужно прочитать все строки устройство pin и потом распарсить, например, с sscanf (хотя поскольку одно поле — один char, можно взять абсолютное смещение от начала строки). Если читаем — то 3 столбец после двоеточия будет состоянием нашего пина. Я уже все проверил, все точно работает без каких либо проблем, главное не забывайте за режим GPIO :)
Пожалуйста, согласовывайте уровни! GPIO у MT6572 имеют лог. уровень 1.6в. Часть периферии чипсета работает на стандартных 3.3в.
Как это работает? См.в исходниках ядра.
Такой способ подойдет для приложений, где не требуется сильно высокая скорость работы. Для шелл-скриптов или даже полноценных нативных приложений таким методом можно управлять пинами без проблем — если вы конечно не реализовываете SPI софтварно :)
Есть и второй способ — использовать mt-gpio напрямую через вызов ioctl. Я этот режим пока еще не пробовал, но он гораздо быстрее — для юзерспейса самое то, а работать с ним довольно легко. См. исходники драйвера здесь.
UART
Это второй способ коммуникации с внешним миром, доступный из коробки. На устройстве целых два канала UART, которые могут работать как минимум со скоростью 921600б/с (или 115200 килобайт в секунду). лучше всего использовать эту шину для общения с другими микроконтроллерами или ПК.
Получить доступ к UART можно благодаря соответствующему character-устройству /dev/ttyMTxx. При стандартных настройках (921600б/с), можно без проблем работать с UART из shell-скриптов, как с самым обычным терминалом: echo для записи, cat — для чтения. Из нативных программ, есть такая же возможность открыть ttyMT и читать/писать при стандартных настройках, а если конфигурацию необходимо изменить, то на помощь приходит termios.
SPI/I2C
А вот тут уже все гораздо интереснее. Как известно, в Linux драйвера шин делятся на два типа: kernel-mode, для работы с драйвером SPI/I2C из других драйверов (например, драйвер камеры хочет получить информацию о модуле через i2c) и user-space i2c-dev/spi-dev. Последние два есть из коробки в большинстве дистрибутивов для «взрослых» одноплатников, но их забыли включить в текущий релиз ядра 3G IoT. Почему? Не ясно — драйвера для i2c и spi у MediaTek точно есть.
На гребенке есть один I2C и один SPI. Исходники ядра для платы можно найти на гитхабе OrangePi. Чуть позже надо будет попробоваать скомпилировать i2cdev и spidev в виде отдельных модулей ядра, которые можно будет загрузить через modprobe.
Я хочу бэйр-метал, а не эти ваши линуксы!!!
И такая возможность есть, но лишь частично. Orange Pi открыли исходники вторичного загрузчика MediaTek — lk (альтернатива u-boot) или Little Kernel. При некоторой модификации логики lk, можно реализовать свою прошивку используя почти всю мощь чипсета. За этим — сюда.
Для чего он еще может пригодится?
Давайте смотреть сами. У нас есть полноценный десктопный Linux, есть Android, есть 2 неплохих ARMv7 ядра, работающих на частоте 1.2ггц, есть 256 мегабайт ОЗУ. Чем он может еще пригодится:
Сервер: Нет, речь конечно же не о NAS. Однако поднять простенькую домашнюю страницу, или попытаться реализовать на нем умный дом можно вполне.
Сбор информации с датчиков: В паре с микроконтроллером, на таком устройстве можно собирать, обрабатывать и хранить довольно большое количество данных с высокой скоростью опроса.
Ретро-машинка для эмуляторов: При условии, что Вы купили фирменный дисплей, поскольку через VNC поиграть не получится. К сожалению, ни одного вывода на ТВ, данный чипсет не имеет, поэтому либо пытаться прикрутить дисплей от китайчика, либо покупать фирменный.
Хитрая и дешевая сигнализация с GPS: В целом, для сигнализации такую плату можно рассматривать как System On Module: сразу и линух есть, и GPS из коробки, и 3G. Выйдет дешевле, чем купить отдельно GPS, ESP32 и 3G модуль.
В целом, можно найти еще кучу всяких разных применений данной плате в embedded.
Схема платы доступна здесь:drive.google.com/drive/folders/19R66eFtCDVDVGs7P_WTTBaHTfshnIIqK
Заключение
Я считаю, что подобных ультрадешевых плат должно быть гораздо больше на рынке, ведь не все готовы платить несколько тысяч рублей за одноплатники. Однако, такие решения не подойдут для тех людей, которые хотят «купить и чтобы работало, с кучей гайдов» — у таких плат банально околонулевая поддержка. Да, Orange Pi уважаемая компания, они предоставляют полный исходный код не только ядра, но и загрузчиков — чего они делать не обязаны были, но по сути они просто произвели на свет эту плату, а разбираться в ней придется конечному пользователю. Без мануалов, без гайдов.
Стоит ли такую себе брать? Я лично не пожалел :) Плата очень перспективная, а ковыряться в исходниках ядра я люблю. Попробую сделать из неё что-то полезное!
Я тут понял откуда развелось столько ненавистников андроида. На самом деле до сих есть люди, которые не признают никакие телефоны, кроме марки Apple, поэтому решил поделиться своими мыслями по этому поводу. Интересно узнать и ваше мнение.
Объясняю откуда берутся Хейтеры андроида. Самый первый телефон у ребёнка в наше время появляется от родителей. Чаще всего это старый бу телефон, либо очень бюджетное устройство около 6-10 тысяч на базе андроид. Которые конечно изначально не обладает хорошими характеристиками, очень быстро устаревает и конечно же имеет ужасную камеру. После нескольких лет жизни ребенок, конечно же устает от такого устройства. Начинает копить деньги, в 16-18 лет получает свою первую зарплату и может смело потратить её на покупку новенького телефона! Но на самом деле, судя по статистике, первый Айфон покупается в кредит.
И вот, момент истины, человек получает в руки Айфон! Конечно же он получает ВАУ эффект после андроида. И потом всем знакомым, друзьям и просто в интернете рассказывает о том, что хуже андроида телефона не видел.
Но почему-то этого человека не смущает, что он пользовался БЮДЖЕТНЫМ андроидом за 10, а потом перешёл ДОРОГОЙ Айфон за 50-100 тысяч. Таким образом, ни разу, не держа, в руках андроид за 50-100 тысяч и появляются Хейтеры андроида. Которые почему то сравнивают свой ПЕРВЫЙ БЮДЖЕТНЫЙ андроид с ФЛАГМАНСКИМ ДОРОГИМ айфоном.
Здравствуйте, любители Героев Меча и Магии 2.
Открытый движок fheroes2 обновился! В рамках новой 1.0.6 версии наша команда провела работу над рядом важных аспектов игры, повышающих качество геймплея, и Вы уже сейчас можете их оценить, установив новую версию на Ваши устройства.
В последних релизах команда серьезно поработала над ИИ движка. Были исправлены проблемы с логикой, когда герои противников вели себя некорректно на карте приключений, посещали объекты, когда этого не требовалось, а также игнорировали героев соперников, если проход к ним был временно заблокирован.
Герои ИИ будут активнее защищать свои города при приближении сильного противника. Также были улучшены алгоритмы расстановки войск героев ИИ.
Кроме этого, было исправлено несколько критических ошибок, которые делали ИИ ощутимо слабее. Ввиду вышеперечисленных изменений, нашей командой было принято решение еще понизить бонусы прироста игрокам ИИ, которые и так были существенно ниже, чем в оригинальной игре. Мы надеемся, что вскоре ИИ движка сможет на равных конкурировать с опытным игроком на высоких сложностях.
ИИ за последнее время стал значительно сильнее, и некоторым игрокам стало трудно проходить оригинальные кампании. Чтобы не начинать всё прохождение заново, в движке теперь появилась возможность понизить сложность на любом этапе игры. Но учтите, понижение сложности отразится на результатах прохождения кампании.
Разработчики не забывают и про быстродействие движка. Была оптимизирована скорость загрузки игровых ресурсов и ускорена отрисовка графики.
Редактор карт всё еще в разработке. Сейчас команда активно работает над интерфейсом редактора. Параллельно с этим ведется проработка нового формата карт, который будет использовать редактор.
В бою были оптимизированы анимации ожидания существ. До этого на самых высоких и низких скоростях все существа, особенно те, которые имели постоянную анимацию, как джинны или призраки, двигались излишне быстро или медленно, что портило визуальное впечатление от игры. Сейчас эти анимации отображаются в комфортных глазу пределах, но зависимость от выбранной скорости в бою осталась.
В городах было добавлено окно найма существ для "злого" интерфейса. А во время появления самих экранов городов и многих других мест были добавлены плавные переходы, как было в оригинальной игре, что добавляет атмосферности игровому процессу.
Были улучшены переводы на русский, польский, испанский и словацкий языки.
Благодарим всех неравнодушных за поддержку проекта fheroes2!
Приятной Вам игры!
Более подробно вы можете ознакомиться с проектом на официальной странице разработки и группе VK.
Игры в этом списке + Временные метки
00:11 - WrestleQuest
01:16 - Return to Monkey Island
02:40 - A Monster’s Expedition
03:49 - Pokémon Sleep
04:19 - Master of Knights
04:54 - Black Clover M: Rise of the Wizard King
05:12 - Conquistadorio
06:21 - GRAND CROSS: Age of Titans
07:12 - Obey Me! Nightbringer
08:48 - Metal Slug: Awakening
iOS: ▶ https://apps.apple.com/cn/app/id1616812439
Видео и музыка предназначены для информационных целей 12 +
Все авторские права принадлежат их законным владельцам.