Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Зазеркалье – это погружение в глубины мифов, магии и странствий. Вас ждут сражения на дорогах удивительных миров, соединенных порталами. Сочная графика и потрясающий сюжет, множество героев, общение с игроками. Без рекламы и любых назойливых ограничений.

Зазеркалье – фэнтези MMORPG

Мультиплеер, Ролевые, Приключения

Играть

Топ прошлой недели

  • Carson013 Carson013 23 поста
  • Animalrescueed Animalrescueed 32 поста
  • Webstrannik1 Webstrannik1 52 поста
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая «Подписаться», я даю согласие на обработку данных и условия почтовых рассылок.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
0 просмотренных постов скрыто
6
SkyLett
SkyLett
1 год назад

Создание мода для актуальной сегодня 7 days to die⁠⁠

Доброго дня местные гении) Сложилась такая ситуация, что играем мы с друзьями на сервере 7DTD и возникла необходимость внести изменения в некоторые файлы игры. А поскольку эта часть (интеграция с твич) людям-мододелам не особо интересна, то и аналогов я найти не смог, что бы взять откуда-то идею.

В общем, я хочу внести изменения в файлы twitch.xml и twitch_events.xml однако не могу разобраться с синтаксисом XPath Explained - то что используется в игре. Смог разобраться в локализации и добавлении НОВЫХ вещей модом, но редактирование текущего кода у меня не получается.

Приведу пример:

Это действие создания зомби по команде из чата твича

Это действие создания зомби по команде из чата твича

Я могу создать файл в своем моде с названием twitch.xml и добавить в него такой же блок - используя созданные заново секции action=name + command + command_key + event_name + default_cost для этого мне потребуется добавить command и command_key в файл локализации + event_name в файл gameevents.xml - что как бы добавляет очень много лишней ручной работы, а что-бы её избежать я хочу использовать xpath для изменения данных в уже существующих блоках.

Это нужно делать именно модом - т.к. при каждом обновлении игры или перекачке - все изменения в файлах естественно затираются, а мод работает всегда. Я уже больше года вносил изменения в файлы игры, но ужасно устал каждый раз переделывать))
В чём значится суть, мне нужно изменить данные в нескольких блоках: 1) начало файла с конфигурацией и пресетом действий

тут я хочу изменить переменные party_kill_reward_max и всё что имеет цифры в значениях + создать новый actions_preset

тут я хочу изменить переменные party_kill_reward_max и всё что имеет цифры в значениях + создать новый actions_preset

2) блок со спавном зомби, тут опять много рутины но это уже не страшно, я хочу использовать существующий gameevents который указывается в разделе event_name что бы не трогать лишние файлы, но в этом блоке мне нужно сменить command + command_key + default_cost + cooldown + вписать в команду созданный выше пресет

этот блок аналогичен и другим командам бады\дебафы\погода\мир и экстра

этот блок аналогичен и другим командам бады\дебафы\погода\мир и экстра

3) в другом файле twitch_events нужно поправить блок с пресетами и взаимодействия с баллами канала

пресеты

пресеты

секция создания наград за баллы канала

секция создания наград за баллы канала

Сейчас, все нужные мне изменения внесены в файлы игры и забекаплены на тыщу раз, потому как я устаю вносить их после каждой обновы и если ничего нового в файлах нет а это не одна тысяча строк, то я просто заменяю файлы на старые. Но хочется сделать всё правильно, а опыта именно с логикой у меня нет(
Может кто сталкивался с этим или понимает как это должно работать и подскажет почему я тупой)
сурсы которые читал и пытался делать по ним команды:
1) Базовый моддинг (фандом)

2) XPath Explained (фандом) тут рассказано как применять атрибуты и проч - но я не нашел для себя рабочего варианта из предложенных

Показать полностью 4
[моё] Игры Моддинг 7 Days to Die Помощь Unity Разработка Длиннопост
1
139
monobogdan
monobogdan
Посты о ремонте и моддинге ретрогаджетов.
TECHNO BROTHER
1 год назад

Автостарт Android-устройств — это просто! Реверсим, патчим загрузчик и заставляем смартфон включаться самому⁠⁠

Обычно Android-устройства принято считать "бесполезными" через 5-10 лет после выхода. Особенно, это касается бюджетных моделей, которые "не тянут" современные сервисы или те девайсы, которые по каким-то причинам физически пострадали в процессе своей жизни. Но пока одни выкидывают смартфоны и планшеты, считая их электронным хламом и засоряя мир, другие стараются найти применение всему подряд и оказывается, что Android-устройства ещё вполне себе могут оказаться полезными. Однако порой необходимо реализовать автоматическое включение устройства при подключения к зарядке и вот здесь многие впадают в ступор - ведь замкнуть кнопку включения зачастую недостаточно! В сегодняшнем материале я расскажу свои кейсы запитывания устройств от блоков питания, а также реализацию автовключения на разных чипсетах. Интересно? Тогда добро пожаловать под кат!

❯ Как и зачем?

Вероятно, читатель спросит мол "зачем 10-летние Android устройства могут быть нужны?". И если немного призадуматься, то можно прийти к выводу, что действительно гаджеты прошлых лет могут быть достаточно полезными во многих сферах, причём не только планшеты, но и Android-смартфоны. И помимо реализации чего-то "стандартного" на манер красивых Android-часов с будильником или, например, мультимедиа станции а-ля iPod, есть ещё множество интереснейших кейсов, в которых можно использовать такие устройства. Я лично собрал для себя несколько:

  • HMI-панель: это умные программируемые дисплейные модули, которые могут выводить ту или иную информацию с микроконтроллеров или любых других устройств на экран. Благодаря 10-дюймовому планшету можно сделать очень удобное переключение режимов работы каких-то устройств, либо сделать показ информации с различных датчиков в помещении в реальном времени. Никто не мешает и в машину такой планшет поставить для сбора информации о двигателе.

    У Android-устройств перед классическими HMI-дисплеями есть огромное преимущество: наличие 3D-ускорителя и возможность выводить красивые визуалиации и графики, а также анимацию. В будущем проекте со своей машиной - "ВАЗ 2110", я покажу как использовать планшет в таких целях на практике.

  • Сбор данных: у микроконтроллеров слишком маленький объем встроенной Flash-памяти, чтобы хранить какие-то большие датасеты и строить из них статистику. Конечно можно подключить MicroSD... но ведь ко всем сразу не будешь по отдельной флэшке подключать, да и MicroSD отнюдь невечные при постоянной перезаписи данных - и здесь приходит на помощь такой планшет. eMMC обычно значительно более выносливая через MicroSD, с неё можно достать данные (при отсутствии шифрования), а мощный процессор планшета вполне может ещё и обрабатывать приходимые данные и куда-то отправлять. Вполне полезно!

  • Использование как одноплатника: я писал об этом недавно статью. Во многих бюджетных планшетах разведен UART на плате, к которому есть доступ из пользовательского окружения и даже Java-приложений! Таким образом, можно общаться с микроконтроллерами по проводному интерфейсу, или напрямую дергать ножками микроконтроллера реализовав прошивку-прослойку для МК.

  • Нестандартные применения: ну, тут я просто хотел похвастаться своим проектом с превращением планшета в игровую консоль с помощью внешнего микроконтроллера :)

Так что, как мы с вами видим, устройства прошлых лет отнюдь не бесполезны и при определенной смекалке мы можем им дать вторую жизнь и приспособить для работы на каком-нибудь объекте. Понятное дело что что-то серьёзное на них никто вешать не будет, но например панель заказа нямки в чебуречной или что-то на манер ГУ в машине - почему бы и нет?

Однако порой возникает задача реализовать авто-старт устройства при подключении смартфона к зарядке или вообще реализация автономной схемы питания. Автономная схема питания реализуется относительно легко: порой можно кинуть 5В от блока питания на VBat (плюсовой и минусовой контакт АКБ) напрямую. КП у MediaTek, имеют пороговое напряжение на аккумуляторе до 5.5-5.6В и не выгорают. Но это рискованно, если БП плохой и произойдет скачок - есть шанс того, что окажется пробитой обвязка/КП/ключи (вход со стороны USB обычно защищен от такого). Лучше всего использовать DC-DC преоразователь на ~4.2В с током от 1.5-2А.

А вот с авто-стартом вопрос интереснее. Всё зависит от реализации этой самой кнопки включения и от чипсета: например, на смартфонах Sony с чипами Qualcomm иногда достаточно лишь сдуть кнопку включения и замкнуть её контакты перемычкой: всё будет работать без каких-либо проблем. Но на некоторых смартфонах, зажатая кнопка включения будет уводить устройство в циклический ребут каждые 10 секунд, что может быть неприемлемо.

Несколько месяцев назад, читатель под ником @A1f подогнал мне китайский iPhone 7 Plus на Android - всё как я и люблю :) Девайс был рабочий, однако после того, как читатель отдал его в сервис, у него по каким-то причинам потерялось пару винтов, оказалась сломана кнопка включения на шлейфе, а смартфон не заряжался...

Ну, с зарядкой вопрос я решил быстро: китайские айфоны иногда используют свои "Lighting'и", несовместимые с оригиналом и которые не могут заряжатьоригинальный айфон. Благо в комплекте был пожухлый оригинальный кабель, который я разобрал и припаял всё обратно. Теперь и USB, и зарядка работают нормально!

С кнопкой вопрос был интереснее: хотя найти такую на шлейфе и кинуть с неё перемычки - дело 5 минут, я лёгких путей не искал и решил сделать автостарт при подключении к зарядке - как и на оригинальном айфоне :)

И, как вы уже поняли, просто так поставить перемычку на контакте Power и массу не получится - смартфон будет постоянно уходить в ребут. Поэтому я сдампил загрузчик с помощью SP Flash Tool и начал ковырять его в IDA Pro, благо устройство не требует разблокировки этого самого загручзика. Способ рабочий для многих устройств на MediaTek, в том числе и некоторых 67xx (возможно придется разблокировать загрузчик), а на устройствах с другими чипсетами алгоритм может быть +- похожим, но если нет возможности напрямую вмешаться в загрузчик, можно сделать авто-загрузку патчем boot.img.

❯ Реверсим и патчим

Для реализации автозагрузки, необходимо пропатчить загрузчик. В устройствах на чипсетах MediaTek их два - первый Preloader, который занимается первичной инициализацией периферии и ОЗУ, а второй - lk, который инициализирует дисплей, грузит ядро Linux и передаёт ему управление. В сети уже давно лежат слитый исходный код и Preloader, и lk, так что с их изучением проблем не возникнет, идея общая у всех устройств.

Итак, что-же происходит при включении смартфона? lk определяет так называемый режим загрузки, в зависимости от которого меняется раздел, с которого грузится ядро (boot или recovery), а также параметры передаются ядру (atags). В процессе работы lk и перед загрузкой ядра, перед тем как показать анимацию зарядки, загрузчик проверяет нажата ли кнопка включения - и если да, то быстренько перезагружает устройство в обычный режим.

Да, всё так легко! Таким образом, нам остаётся лишь пропатчить условие с проверкой кнопки включения, дабы смартфон считал что кнопка нажата тогда, когда она по факту не нажата. В IDA Pro, lk загружается с смещением памяти в 0x0, а найти нужную инструкцию нам поможет зацепка в виде отладочной строки. IDA Pro сразу строит все xref'ы и обращения к строкам, так что найти нужные данные не составит труда. Ищем "[%s] PowerKey Pressed in Kernel Charging Mode Before Jumping to Kernel, Reboot Os" и смотрим все обращения к адресу памяти, с которого начинается строка.

Чуть выше метода вызова printf, можно найти наше условие, которое начинается с инструкции CMP R0, #0. Сразу после него идёт инструкция BNE, которая бранчит код и продолжает загрузку системы в режиме "зарядки". Нам остаётся лишь заменить её на NOP в hex-редакторе в той-же IDA Pro и система сразу после попытки включится в режиме зарядки уйдет в ребут и перезагрузится в обычном режиме, будто мы просто включили смартфон с кнопки!

Прошиваем наш новый lk:

И видим, что всё работает! :)

❯ Второй способ

Если возможности пропатчить загрузчик нет, в дело вступает второй способ, заключающийся в патче boot.img - раздела с ядром устройства и ramdisk'ом, в котором содержаться скрипты для инициализации устройства (*.rc). Всё дело в том, что даже при зарядке смартфон загружает ядро Linux, первоначальный рамдиск и в зависимости от режима загрузки запускает либо app_process (главныйй процесс в Android), стартуя загрузку системы, либо специальную программу, которая часто называется charger и находится в /system/bin/ (иногда в самом boot.img).

На смартфонах с разными чипсетами реализация этого способа может сильно отличаться, однако приведу пример с смартфонами Sony Erisson из 2011 года (у меня есть Xperia Play с сломанной кнопкой включения). Там устройство начинает выполнение скрипта init.rc, тот в свою очередь запускает init.semc.rc и на этапе инициализации запускает программу chargemon, которая выводит анимацию зарядки, отключает смартфон, если кабель вытащили и слушает нажатие кнопки включения, продолжая процесс загрузки, если пользвоатель зажал кнопку включения. Соответственно, весь фикс - закомментировать эту строку :)

#exec /system/bin/chargemon

В случае MTK, можно попробовать ещё пропатчить init.rc, дабы он продолжал загрузку системы даже в случае подключения кабеля в режиме зарядки. Способов много, главное проявить смекалку и не бояться разбираться в чём-то непонтяном :)

❯ Заключение

Как видите, ничего сложного в реализации автоматического старта устройства нет. Где-то можно обойтись перемычкой на кнопку включения, где-то патчем boot.img, а где-то и патчем загрузчика. Но тем не менее, это вполне возможно на практике и позволяет делать такие приколюхи, как я со своим китайским айфоном :)

Надеюсь, материал вам был интересен и полезен! Пишите, нужно ли вам было реализовать что-то подобное и как это делали в комментариях!

Друзья, если у вас есть подобные китайчики и вы не разделяете желания пытаться вдохнуть в них жизнь, но выбрасывать их жалко — можете задонатить их мне :) Как сами видите — девайсы попадают в хорошие руки. Из недавнего — я взял нерабочую, утопленную китайскую копию 14 Pro Max из под СЦ в качестве основного смартфона. Также у меня есть канал в Telegram, куда я выкладываю бэкстейджи статей, различные заметки о ремонте, моддинге, программировании и реверс-инжиниринге и свои мысли, а также ссылки на свои новые статьи и видео. Кому интересно — залетайте!

Интересный материал?
Всего голосов:
Если вы постоянный читатель, смотрите ли вы мой YouTube-канал?
Всего голосов:

Статья подготовлена при поддержке TimeWeb Cloud. Подписывайтесь на меня и @Timeweb.Cloud, чтобы не пропускать новые статьи каждую неделю!

Показать полностью 13 2
[моё] Опрос Android Смартфон Гаджеты Покупка Своими руками Моддинг Unix Linux Микроконтроллеры Длиннопост
16
4
FunFunky
1 год назад

Обновил грызунов⁠⁠

В распоряжении есть две мыши, домашняя G Pro Wireless и рабочая SS Riwal 3 Wireless

И так совпало, что на G Pro пора менять энкодер, а на Riwal левый микрик из-за замены энкодера)) Пока менял передавил микрик и потерялся щелчек. Пробовал разобрать и натянуть пружину по новой, но в этот раз не помогло и решил обновить целиком.

Поехал к товарищу с авито, выбрал после тестов пару Kailh GM 9.0 и Huano Crystal silent и Kailh RED энкодер

1/3

Kailh GM 9.0

Huano Crystal silent

Huano Crystal silent

1/2

До / после G Pro

Первый опыт бесшумных кнопок и таки это оказался кайф, рекомендую попробовать всем, кто не пробовал.

1/2

До / после SS Riwal 3

Kailh GM 9.0 брал как просто звонкие, чуть более мягкие. В целом каких то супер необычных ощущений кроме приятного звонкого звука от них не получил, но так и планировалось.

Кстати за пол года на SS поменял три энкодера TTC

Очень странные они какие то, по ощущениям как будто внутри наждачкой трет, как будто без смазки. Kailh с ходу себя лучше показали, нет этой шершавости в вращении.

Показать полностью 11
[моё] Моддинг Поломка Мышь Микрик Макросъемка Длиннопост
1
31
Rock.Wolf
Rock.Wolf
В основном делаю посты по серии игр Disciples
Библиотеки Невендаара
Серия Моддинг Disciples 2
1 год назад

Моддинг Disciples II, часть 1: правка текста саг⁠⁠

Планирую написать серию постов о моддинге Disciples II, от самого простого типа правок текста, и основных характеристик юнита, до сложного по типу добавления новых юнитов, создания кастомных модификаторов и дальностей атак. Есть те, кому интересно? Для примера вот вам первая часть.

Вступление

Я считаю, что лучше всего материал можно усвоить на реальных примерах, поэтому каждый урок попытаюсь подать на актуальных потребностях правок.

Текст саг и игровых наименований/описаний понадобиться исправить если вы захотите сделать собственную локализацию игры на родной язык или исправить ошибки перевода уже существующих локализаций.

Подготовка к работе

Текст и числа в Disciples 2 хранятся в файлах с расширением .dbf. Это уже довольно устаревший формат хранения данных, но при этом достаточно простой в понимании. Для работы с dbf-файлами рекомендую скачать DBF Viwer 2000.

В данном уроке нас интересуют два файла: Sinfo.dbf и Tscen.dbf. Расположены они по пути "Папка_с_Игрой/Scens/".

Sinfo - наименование, описание, цель и брифинг саги

Открываем DBF Viwer 2000 - Меню «Файл» - пункт «Открыть» и указываем путь к Sinfo.dbf. Если вы собираетесь редактировать версию игры в русской локализации, то возможно вместо текста вы увидите нечто подобное…

Добавьте описание

Добавьте описание

Чтоб исправить отображение достаточно нажать F11 или в меню «Просмотр» нажать на пункте «OEM кодировка».

Добавьте описание

Добавьте описание

В Sinfo.dbf нас интересуют поля:

NO_SCEN - поле, что хранит уникальный номер (идентификатор) для каждой главы саги. Оно служит для связи с другими таблицами.

CAMPAIGN - хранит в себе идентификатор расы которой принадлежит эта глава. Позволит быстрее найти нужную нам главу.

  • C000CC0002 - Империя.

  • C000CC0003 - Горные Кланы

  • C000CC0004 - Легионы Проклятых

  • C000CC0005 - Орды Нежити

  • C000CC0006 - Эльфийский Альянс

NAME - Наименование главы саги.

DESC - Описание сценария в двух словах, то есть то, что мы видим в кратком описании сохранения.

Здесь мы видим текст из полей NAME и DESC

Здесь мы видим текст из полей NAME и DESC

BRIEFING - Цель главы саги.

 Текст из BRIEFING 

 Текст из BRIEFING 

BRIEFLONG1, BRIEFLONG2, BRIEFLONG3, BRIEFLONG4, BRIEFLONG5 - Это разбитый на 5 частей вступительный текст каждой главы. Это необходимость из-за ограничения в 254 символа у строки.

Текст из полей BRIEFLONG1, BRIEFLONG2, BRIEFLONG3, BRIEFLONG4, BRIEFLONG5

Текст из полей BRIEFLONG1, BRIEFLONG2, BRIEFLONG3, BRIEFLONG4, BRIEFLONG5

Применение

Лично у меня всегда дергался глаз, когда я видел переводы наименований кланов гномов. Например, правящий клан на момент Disciples II зовется Cloudkeeper. Самые популярные версии перевода: Тучегон, Повелитель Туч и Небохранитель. Как по мне такие вещи либо лучше не переводить и просто записать кириллицей, как фамилию, либо если все таки собрались переводить, то не искажать смысл без особой нужды. К слову в данном примере локализации половина наименований имеет перевод, половина записана через кириллицу. Поэтому давайте сделаем все в одном стиле и запишем Повелителей Туч, как Клаудкиперов.

Находим в Sinfo.dbf запись с NO_SCEN = S100SC0000 и дважды на нее кликаем. У вас откроется форма редактирования записи.

Добавьте описание

Добавьте описание

Заменяем все «Повелитель Туч» на «Клаудкипер» и жмем «Ок». Обязательно закрываем DBF Viewer 2000 иначе игра не сможет использовать SInfo, который открыт в программе и завершит работу с ошибкой. Когда закрыли смело заходим в игру (важно начать сагу заново, иначе старое сохранение останется с текстом до правок) и любуемся результатом своего труда.

Добавьте описание

Добавьте описание

Добавьте описание

Добавьте описание

Добавьте описание

Добавьте описание

Tscen - текст диалогов, наименования торговцев, отрядов, руин, городов.

В Tscen.dbf нас интересуют поля:

NO_SCEN - поле, что хранит уникальный номер (идентификатор) для каждой главы саги. Если подсматривать в прошлую таблицу можно легко определить к чему относится запись.

ID_OBJECT - уникальный номер (идентификатор) для каждой записи в этой таблице.

ID_STRING - это поле указывает на то, к какому типу относится текст в следующей колонке:

  • NAME_TXT - наименования отрядов, городов, имен ИИ в главе саги, событий на саге

  • TITLE - наименования руин

  • TXT_TITLE - наименования торговцев, лагерей наемников и тренеров.

  • TXT_DESC - описания торговцев, лагерей наемников и тренеров.

  • DESC_TXT - неиспользуемое поле, наследие Disciples Sacred Lands, где в меню Дипломатии можно было почитать биографию лорда фракции. Идут в паре с именем Лорда расы, друг за другом.

  • DESC - неиспользуемое поле, скорее всего предполагалось здесь хранить описания руин, т.к. они идут в паре с наименования руин, друг за другом.

  • POPUP_TXT - текст диалогов.

TEXT - думаю здесь объяснение не нужно.

Применение

Давайте попробуем исправить диалоги все в той же первой главе саги Легионов Проклятых. Чтоб упростить себе работу используем фильтрацию по полю NO_SCEN = S100SC0000 и ID_STRING = POPUP_TXT

Добавьте описание

Добавьте описание

Например, исправим диалог после убийства гонца, Бесрезен заменим на Бетрезен. Для этого находим запись с ID_OBJECT = S100EV0014, дважды кликаем по ней, заменяем текст и жмем «ОК». Закрываем редактор полностью, начинаем заново сагу Легионов Проклятых.

Добавьте описание

Добавьте описание

В игре мы увидим исправленный текст:

Добавьте описание

Добавьте описание

Заключение

Вот таким образом можно сделать собственную локализацию саг в Disciples II или исправить неточности перевода в той, что больше всего вам по душе. В следующий раз планирую рассказать, как редактировать весь остальной текст в игре и за что отвечают основные dbf файлы.

Показать полностью 12
[моё] Disciples 2 Моддинг Гайд Длиннопост
19
1
kotrg
kotrg
1 год назад

Моддинг или исправляем звук на Ardore Temple⁠⁠

Приобрел я две пары ушей онлайн.
Выбор пал на Logitech G435 и Ardore Temple.
Послушав их, пришел к неутешительным выводам, у меня все еще нет нормальных наушников. У Ardor были очевидные проблемы с АЧХ и сильнейшим завалом в сторону БАСБУСТЕД звучания, но отличный запас по громкости и автономности, а Logitech могли похвастаться хорошим звуком, но никаким запасом по громкости...
Было решено это исправлять. И тут у нас есть два пути, софтвейрный и хардовый, т.е. программно установив эквалайзер и настроив кривую на свой вкус или потыкав схемку паяльником, я выбрал второй вариант ввиду того что первый представляет собой костыль, так как если использовать на нескольких устройствах с разными операционками - звук везде будет разный, более того он будет плох, так как любая эквализация деформирует звук и вносит свои искажения помимо исправлений. Да и в целом мне лениво подбирать эталонные значения. По этому я взяв отвертку полез внутрь. Аккуратно потянув амбушюру в сторону я снял ее с левого уха, медленно раскрутил 4 винта и уверенно отложил внешнюю часть корпуса с динамиком в сторону. Открутив еще три винта на плате и перевернув ее я увидел их (на фото) два конденсатора, нафиг  тут не нужных, взяв паяльник я убрал их оттуда.
У всех я надеюсь есть по паяльной станции... Ну не беда в крайнем случае можно попробовать ОЧЕНЬ аккуратно сломать их кусачками ну или сходить в любой сервисный центр где есть возможность показать пост мастеру и за символическую сумму, не более 500 за 5 минут работы, вы можете не брать на себя эту задачку.
После удаления этих элементов звук стал просто нормальным, запас по громкости также остался, а звучание перестало быть бубняще-басящим. Учтите что вы само собой в 99% слетаете с гарантии и все что вы делаете - делаете на свой страх и риск!
Удачи и больше покупок не требующих доводки!)

Возможно сделаю пост по Logitech G435 и попробую сделать их громче, но позже, пока пользуюсь и довольствуюсь тем что получилось с Temple)

Моддинг или исправляем звук на Ardore Temple
Показать полностью 1
Моддинг Temple
3
21
monobogdan
monobogdan
Посты о ремонте и моддинге ретрогаджетов.
TECHNO BROTHER
1 год назад

Я все таки запилил первый видос, экранизацию одной из прошлых своих статей⁠⁠

Да, где-то запорол звук и видеоряд, но я старался! Пожалуйста, зацените ;)

[моё] Смартфон Гаджеты Покупка Опрос Девайс Реплики Подделка Копия Китайский iPhone Мобильные телефоны Электроника Ремонт Моддинг Видео YouTube
8
user8589433
user8589433
1 год назад
Серия Fallout 4 Ultimate

Fallout 4 Ultimate⁠⁠

Это просто промо-ролик. В ближайшие месяцы будет серия роликов по введённым в игру механикам. А пока просто буду попрошайничать лайки!

[моё] Компьютерные игры Bethesda Геймеры YouTube Steam Fallout Fallout 4 Сборка Для взрослых Ultimate Моды Моддинг Видео
7
307
monobogdan
monobogdan
Посты о ремонте и моддинге ретрогаджетов.
TECHNO BROTHER
1 год назад

Делаем из битого планшета одноплатник: подключаем Android-устройства к дешевым микроконтроллерам через UART⁠⁠

В наше время, из-за санкций одноплатники стали стоить каких-то «конских» денег. Даже б/у RaspberryPi Zero стоит 2-3 тысячи рублей на барахолках, что, мягко скажем, не совсем лояльная цена для «самого дешевого одноплатного компьютера в мире». Конечно, Orange Pi Zero всё ещё можно купить в пределах 1.500-2.000 рублей, но как по мне и эта цена не слишком лояльна за те характеристики, который предлагает такой одноплатник. С другой стороны, Android-планшеты 10-летней давности продаются на барахолках по 100-300 рублей, что выглядит гораздо привлекательнее, причём на некоторые устройства практически без костылей можно установить полноценный дистрибутив Linux! Вероятно, многие читатели скажут мол «автор бомж» и будут правы: ведь в рамках этой статьи, я хочу рассказать о том, как использовать полурабочий древний планшет в качестве полноценного одноплатника путём подключения его к микроконтроллеру и выводу GPIO! Сегодня мы с вами: узнаем, как подключить микроконтроллер к шине UART в планшете и научимся работать с последовательной шиной в Android прямо из Java и нативных программ. Интересна моя концепция антикризисного одноплатника? Тогда добро пожаловать под кат!

❯ Зачем это нужно?


Пожалуй, нельзя сказать, что подобная концепция пристраивания старых планшетов — вопрос исключительно цены. 2-3 тысячи рублей не такие уж и большие деньги и при желании можно купить хотя-бы Б/У, но всё таки полноценный одноплатник с нормальной GPIO-гребенкой. Однако здесь стоит вопрос не столько дешевизны, сколько E-Waste: зачем выкидывать в помойку потенциально рабочие планшеты с живым процессором, если их можно пристроить куда-то ещё?

На самом деле, планшеты с ROOT-доступом уже из коробки могут выполнять весьма полезные задачи, как, например, хостинг http-сервера для домашней страницы, работать как панель с часиками и погодой, или, например, работать в качестве HMI-панели для оформления заказов в шаурмечной. Кроме того, многие планшеты на базе смартфонных чипсетов (MediaTek, Spreadtrum) имеют полноценный Bluetooth-модуль, что позволяет «подружить» планшет с микроконтроллером через радиоканал, что значительно расширяет возможный спектр применений.

Преимуществ у такого подхода много: у «пожилого» планшета уже есть большой, достаточно качественный (хороший TN, либо даже IPS) дисплей с тачскрином, который поддерживает мультитач, GPU для вывода 3D-графики, 3.5мм для вывода звука + встроенные динамики, а также весьма неплохое, по сравнению с дешевыми одноплатниками, железо. Звучит весьма вкусно для цены в 300 рублей: собрать хоть немного похожую конфигурацию на базе RPi выйдет в 10-15 тысяч рублей (учитывая дороговизну MIPI-матриц с тачскринами + цену самой «малинки» и обвязки для аудиотракта).

Но при всех перечисленных достоинствах, атрибутом любого полноценного одноплатника является наличие GPIO — и даже здесь мы сможем с вами выкрутится! Первый способ, о котором я чуть выше вскользь рассказал, позволяет реализовать общение с МК и «ногодрыг» через BT-радиоканал, но минусы такого подхода очевидны (МК с BT дороже, радиоканал потребляет дополнительную энергию, некоторые могут посчитать BT небезопасным). Однако есть и второй подход, который заключается в использовании диагностических пятачков UART на плате устройства для наших личных целей!

С таким подходом можно использовать как «голый» Linux, используя концепцию, которую я представил в этой статье, так и взаимодействовать из Java-приложений для Android (что даёт уже, как минимум, удобный GUI-фреймворк). Сегодняшняя статья будет «без воды», только чистая конкретика, поэтому давайте перейдем к реализации!


❯ Подготовка


Как я уже говорил выше — в рамках данной статьи мы рассмотрим использование UART в планшете для наших собственных целей. UART — это двунаправленная полнодуплексная цифровая шина, которая позволяет обеспечить стабильную передачу данных при относительно невысокой скорости, измеряемой вбодах. То есть, быстро стримить картинку с её помощью вы не сможете, но сможете, например, получить состояние входов МК, прочитать что-то на шине I2C, используя мост UART -> I2C или, например, прочитать показания датчиков, которые МК предварительно опросил.

Сама по себе концепция очень простая: многие китайские производители планшетов и смартфонов не только разводят UART в виде отдельного пятачка на плате, но и подписывают его, задействуя UART-канал как вывод для логов ядра, а иногда и предоставляя доступ к рутовой консоли! В свою очередь, из юзерспейса мы можем получить доступ к UART с помощью устройства/dev/ttyS<x>на подавляющем числе чипсетов и/dev/ttyMT<x>на MediaTek. Однако учтите, что в некоторых случаях придется патчить загрузчик, дабы редиректнуть логи ядра в /dev/null.

Однако наличие UART на плате — не всегда признак того, что он сконфигурирован в системе верно. Например, на смартфонах с чипсетами SC6820 нормально завести UART я так и не смог, а на некоторых устройствах на базе MT657x нужно патчить загрузчик, дабы он «увидел» нужный канал UART! В моём случае, героем статьи стал планшет Prestigio, у которого отказал тачскрин, но был доступен UART:

Конкретно в моём случае, после установки последней официальной прошивки планшет перестал слать логи на UART и устройство /dev/ttyMT3 оказалось доступным для наших операций, в вашем же случае может потребоваться настройка devicetree, или просто патчинг загрузчика, дабы редиректнуть консоль на другой вывод UART. Кроме того, необходимо обязательно получить root-доступ хотя-бы к adb shell, поскольку доступ к /dev/tty устройствам возможен только от имени суперпользователя. Как же проверить UART на возможность чтения/записи? Сначала нам необходимо взять ESP32 или любой UART-USB преобразователь, припаять сигнальные линии RX/TX и использовать любую программу для работы с последовательным портом, например Putty. Заходим в adb shell, и пишем что-нибудь в консоль:

Вуаля! Всё работает :)

Вуаля! Всё работает :)

Работает? Замечательно, значит мы сможем использовать планшет вместе с микроконтроллером! Переходим к практической реализации нашего приложения!

❯ Используем из Java


Я специально решил выделить для Java-подхода отдельный раздел, поскольку просто взять и открыть /dev/ttyMT3 с помощью FileInputStream не выйдет. Дело в том, что даже несмотря на наличие root-доступа, по факту ни одно Android-приложение его не имеет (за исключением подписанных системных в папке /system/app/) и для всех операций, требующих повышенных привилегий, либо распаковывают и запускают внешнюю нативную программу из под суперпользователя, либо с помощью специального костыля с запуском sh-программ читают/пишут нужные блочные устройства сами. Связано это с тем, что все Android-приложения работают в хост-процессе app_process, который форкается (отпочковывается) от «главного» процесса, который запущен из под «простого» пользователя, который не находится в группе system.

Здесь концепция также очень простая: su имеет аргумент -c, который позволяет запустить команду от имени root-пользователя и возвращает объект процесса, дабы мы потом могли перехватить stdout:

Таким образом, для чтения текстовых данных из UART'а нам достаточно лишь периодически «слушать» stdout команды cat и обрабатывать данные:

Костыль, но со вкусом :) Если вас не устраивает такой подход или ваше приложение значительно более комплексное, вы можете использовать UART и из под нативных программ.

❯ Используем из C


Работа с последовательными портами в Linux не отличается от работы с любыми другими файлами и устройствами: вызовов open, read, write и close обычно хватает и лишь иногда к ним в довесок нужен ioctl.

int fd = open("/dev/ttyMT3", O_RDWR);
int result = write(fd, command, strlen(command));

Для работы с терминалом необходимо использовать модуль termio который предоставляет все необходимые структуры для настройки режима работы терминала, в т.ч и бодрейт. Дело в том, что изначально последовательное устройство настроено на режим работы в качестве терминала, т.е драйвер отдаст данные только после того, как устройство на UART пошлёт \n, или превысит размер внутреннего буфера для сообщения. Если вам нужно работать с бинарными данными и получать их «на лету» — необходимо настроить последовательный порт в «binary» режим:

tcgetattr(modemFd, &tio);
tio.c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON);
tio.c_oflag &= ~(OPOST);
tio.c_cflag |= (CS8);
tio.c_lflag &= ~(ECHO | ICANON | IEXTEN | ISIG);
tcsetattr(modemFd, TCSAFLUSH, &tio);

Если же вам достаточно текстового терминального режима, то можно продолжить как есть и использовать fgets, fscanf и прочие удобные функции из libc! О том, как собрать нативную программу для смартфона и как вообще выбросить Android из него, читайте в моей отдельной статье.

❯ Заключение


Вот таким образом можно использовать проводную шину в планшете для собственных нужд! Как видите, совершенно ничего сложного и используя эти наработки, я реализовал уже не один проект! Надеюсь, материал вам был интересен и полезен :) Пишите своё мнение, можно ли использовать дешевые планшеты по 300 рублей в качестве одноплатников?

Статья была подготовлена при поддержке TimeWeb Cloud. Подписывайтесь на меня и @Timeweb.Cloud, дабы не пропускать новые статьи каждую неделю! Ну а больше подробностей о будущем контенте, как обычно, в первом комменте! Также у меня есть свой Telegram-канал, куда я выкладываю свои мысли, советы по ремонту и моддингу различных гаджетов, а также вовремя публикую ссылки на новые статьи!

Показать полностью 10
[моё] Программирование Гаджеты Смартфон Linux Программа Android Java Планшет Своими руками Моддинг Девайс Ништяки Одноплатный компьютер Длиннопост
36
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии