<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Erinome Lane &#187; mobile-tech</title>
	<atom:link href="https://tt.erinome.net/tag/mobile-tech/feed" rel="self" type="application/rss+xml" />
	<link>https://tt.erinome.net</link>
	<description>a bit of this, a bit of that...</description>
	<lastBuildDate>Mon, 23 Mar 2026 12:51:51 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.2.38</generator>
	<item>
		<title>Рандомизация фраз на Roborock S50/S55</title>
		<link>https://tt.erinome.net/2019/05/885</link>
		<comments>https://tt.erinome.net/2019/05/885#comments</comments>
		<pubDate>Wed, 15 May 2019 16:12:00 +0000</pubDate>
		<dc:creator><![CDATA[root]]></dc:creator>
				<category><![CDATA[Софт]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mobile-tech]]></category>

		<guid isPermaLink="false">http://tt.erinome.net/?p=885</guid>
		<description><![CDATA[Roborock S5 &#8211; серия недорогих роботов-пылесосов с лидаром, входящая в категорию товаров для &#8220;умного дома&#8221; от Xiaomi. Дистанционное управление со смартфона и root-доступ ко встроенной операционке на базе Linux прилагаются. Наличие root-доступа предоставляет возможность немного поиграться с системой. Например, по &#8230; <a href="https://tt.erinome.net/2019/05/885">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Roborock S5 &#8211; серия недорогих роботов-пылесосов с лидаром, входящая в категорию товаров для &#8220;умного дома&#8221; от Xiaomi. Дистанционное управление со смартфона и root-доступ ко встроенной операционке на базе Linux прилагаются.<span id="more-885"></span></p>
<p>Наличие root-доступа предоставляет возможность немного поиграться с системой. Например, по умолчанию на каждое конкретное действие робот отвечает одной единственной фразой. И хорошо, если не по-китайски. Не очень весело, правда?</p>
<p>Попробуем сделать так, чтобы вместо этого робот отвечал случайной репликой из соответствующей категории фраз. Для этих целей будет использоваться самописная пользовательская файловая система fuse, сделанная на базе <a href="https://www.cs.nmsu.edu/~pfeiffer/fuse-tutorial/" target="_blank" rel="noopener">bbfs</a>. Смысл состоит в том, чтобы при обращении к какому-либо файлу со звуком &#8211; например, <em>sound.wav</em> &#8211; модифицированная ФС проверяла наличие рядом файлов с именами <em>sound_1.wav</em>, <em>sound_2.wav</em> и т.д. и случайно выбирала один из них. Все прочие же действия bbfs просто пробрасывает в нижележащую файловую систему без изменений.</p>
<h2>Ручная установка</h2>
<p>Инструкция далее предполагает минимальное умение пользоваться linux-терминалом через putty и (win)scp, а так же уже рутированное ПО на роботе. Если это не для вас &#8211; смело пропускайте этот раздел и переходите ниже.</p>
<ol>
<li>Сначала установим нужную локализацию, на базе которой будет строиться наша &#8211; например, при помощи WIN-MIROBO. В результате на роботе по пути <em>/mnt/data/rockrobo/sounds</em> появится каталог с набором звуковых wav-файлов.</li>
<li>Делаем копию этого каталога в соседний, например: <em>/mnt/data/rockrobo/sounds_multi</em>, не забываем сделать <em>chown</em> на <em>ruby</em> (или другого пользователя, не <em>root</em>) как каталога <em>sounds</em>, так и <em>sounds_multi</em> (для удобной заливки новых wav-файлов через <em>winscp</em>).</li>
<li>Установим поддержку файловых систем <em>fuse</em>, используя стандартные пакеты к <em>Ubuntu 14.04</em> для armhf: понадобятся libfuse2_2.9.2-4ubuntu4.14.04.1_armhf.deb и fuse_2.9.2-4ubuntu4.14.04.1_armhf.deb с <a href="https://launchpad.net/~ubuntu-security/+archive/ubuntu/ppa/+build/7431580" target="_blank" rel="noopener">launchpad.net</a>. Для установки забрасываем файлы в робота и используем <em>dpkg -i имя_файла</em>.</li>
<li>Забрасываем в робота собранный бинарник файловой системы <a href="https://fs.erinome.net/roborock/" target="_blank" rel="noopener">bbfs</a> и кладем его, к примеру, в <em>/usr/local/bin</em>, делаем его запускаемым (<em>chmod +x</em>)</li>
<li>В файле <em>/etc/fuse.conf</em> раскомментируем опцию <em>user_allow_other</em>, т.к. в противном случае из-под root-а не будут видны файлы в смонтированных пользователем каталогах, делаем этот файл читаемым для всех (<em>chmod +r</em>).</li>
</ol>
<p>Теперь мы готовы запустить <em>bbfs</em>. Для этого заходим из-под <em>ruby</em> (или другого пользователя, главное &#8211; не <em>root</em>) и набираем следующую команду: <code>bbfs -o nonempty,allow_root /mnt/data/rockrobo/sounds_multi /mnt/data/rockrobo/sounds</code>. После этого в каталоге <em>sounds</em> будут показаны все файлы из <em>sounds_multi</em>, но при выборе основного файла <em>sounds/sound.wav</em> в действительности будет запрошен случайным образом либо <em>sounds_multi/sound_N.wav</em>, либо исходный <em>sounds_multi/sound.wav</em>.</p>
<p>Отметим, что N ∈ [1;20] &#8211; и только в порядке возрастания (т.о. если файла <em>sound_1.wav</em> нет, то <em>sound_2.wav</em> даже проверяться не будет).</p>
<p>Для размонтирования обратно используем команду <code>fusermount -u /mnt/data/rockrobo/sounds</code>, и в <em>/mnt/data/rockrobo/sounds</em> возвращается его исходное содержимое.</p>
<p>Если вручную все завелось корректно, то для автоматического старта при запуске робота можно добавить в <em>/etc/rc.local</em> следующую строку: <code>su ruby -c "bbfs -o nonempty,allow_root /mnt/data/rockrobo/sounds_multi /mnt/data/rockrobo/sounds"</code>. Не забываем указывать правильного пользователя после <em>su</em> и не теряем кавычки.</p>
<h2>Предсобранные прошивки</h2>
<p>На сайте <a href="https://github.com/rand256/valetudo/releases" target="_blank" rel="noopener">github.com/rand256</a> есть предсобранные прошивки с рут-доступом, Valetudo RE и предустановленной в том числе и системой рандомизации фраз. После установки такой прошивки необходимо только создать на роботе директории /mnt/data/rockrobo/sounds и /mnt/data/rockrobo/sounds_multi и положить в последнюю набор файлов озвучки, включающих разные перефразированные реплики под каждое событие: например, start.wav, start_1.wav, start_2.wav.</p>
<p>Таким образом, после перезагрузки робот станет использовать для одного и того же события разнообразные слова вместо постоянного повторения единственной фразы &#8211; и это звучит намного живее и естественнее.</p>
]]></content:encoded>
			<wfw:commentRss>https://tt.erinome.net/2019/05/885/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Локальные группы контактов в Android</title>
		<link>https://tt.erinome.net/2014/12/762</link>
		<comments>https://tt.erinome.net/2014/12/762#comments</comments>
		<pubDate>Wed, 24 Dec 2014 12:47:43 +0000</pubDate>
		<dc:creator><![CDATA[root]]></dc:creator>
				<category><![CDATA[Разное]]></category>
		<category><![CDATA[android-tweaking]]></category>
		<category><![CDATA[mobile-tech]]></category>

		<guid isPermaLink="false">http://tt.erinome.net/?p=762</guid>
		<description><![CDATA[В современных смартфонах под управлением Android в стандартных прошивках зачастую присутствуют преднастроенные локальные группы контактов, которые стандартными средствами невозможно ни удалить, ни переименовать. Обычно они называются &#8220;Colleagues&#8220;, &#8220;Family&#8221; и &#8220;Friends&#8221; и нередко в адресной книге отображаются над синхронизируемыми группами Google-аккаунта &#8230; <a href="https://tt.erinome.net/2014/12/762">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>В современных смартфонах под управлением <strong>Android</strong> в стандартных прошивках зачастую присутствуют преднастроенные локальные группы контактов, которые стандартными средствами невозможно ни удалить, ни переименовать. Обычно они называются &#8220;<em>Colleagues</em>&#8220;, &#8220;<em>Family</em>&#8221; и &#8220;<em>Friends</em>&#8221; и нередко в адресной книге отображаются <em>над</em> синхронизируемыми группами <em>Google</em>-аккаунта или других сетевых сервисов. И они продолжают отображаться даже в том случае, когда они пусты и в них нет ни одного контакта. Не приходится говорить о том, насколько это глупо и неудобно.</p>
<p>Для взломанных телефонов с <em>root</em>-доступом эта проблема подлежит исправлению.<span id="more-762"></span></p>
<p>Нам потребуется:</p>
<ul>
<li>Права суперпользователя на телефоне и утилита <a href="http://4pda.ru/forum/index.php?showtopic=318487" target="_blank">SuperSu</a> или ее аналоги;</li>
<li>Редактор баз данных &#8211; например, <a href="http://4pda.ru/forum/index.php?showtopic=212994" target="_blank">SQLite Editor</a>;</li>
<li>Аккуратность.</li>
</ul>
<p><strong>ВНИМАНИЕ! Мы не несем ответственности за исправность вашего оборудования после проведения описанных в статье действий. Вы производите все операции на свой страх и риск. Неумелое редактирование системных баз данных смартфона может привести к неработоспособности системы и потребует ее перепрошивки.</strong></p>
<p>Процесс удаление неугодных локальных групп достаточно прост и займет не более пяти минут.</p>
<ol>
<li>Открываем <strong>SQLite Editor</strong> и соглашаемся предоставить ей права суперпользователя. Если запроса от <strong>SuperSu</strong> не последовало &#8211; попробуйте использовать <strong>Root Explorer</strong> для выбора файла для редактирования. Иначе вы не сможете сохранить внесенные изменения.</li>
<li>Переходим на закладку <em>Files</em> и переходим в каталог <em>/data/data/com.google.android.providers.contacts/databases</em>. В нем интерес представляет файл contacts.db (в зависимости от прошивки &#8211; contacts2.db). Открываем его.</li>
<li>Спустя некоторое время программа отобразит список таблиц, хранимых в выбранной базе данных контактов. Отыскиваем строку <em>groups</em> и нажимаем на нее.</li>
<li>Открывается содержимое таблицы <em>groups</em>. В этих строках хранится информация обо всех существующих группах контактов.  Чаще всего нередактируемые локальные контакты занимают первые три строки и имеют <em>account_id</em>, равный единице.</li>
<li>Редактор SQLite допускает удаление строк, но для минимизации риска порчи данных убрать неугодные группы контактов можно просто путем выставления единицы в поле <em>deleted</em>. Для этого нажимаем на интересующую нас строку и кликаем на значок карандаша сверху экрана.</li>
<li>Открывается меню редактирования выбранной строки. Меняем значение поля <em>deleted</em> с нуля на единицу и нажимаем кнопку <em>Save</em>.</li>
<li>Повторяем это действие для остальных предзаданных групп контактов и закрываем <strong>SQLite Editor</strong>.</li>
</ol>
<p>Теперь перезапускаем приложение адресной книги и убеждаемся, что локальные группы в ней более не отображаются вообще!</p>
<p>PS: Вместо выставления единицы в поле <em>deleted</em> можно также поставить ноль в поле <em>group_is_read_only</em> &#8211; после этого переименовать или удалить локальные группы станет возможным через обычный встроенный редактор групп в адресной книге.</p>
]]></content:encoded>
			<wfw:commentRss>https://tt.erinome.net/2014/12/762/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Мощность Wi-Fi антенн и OpenWrt</title>
		<link>https://tt.erinome.net/2011/02/109</link>
		<comments>https://tt.erinome.net/2011/02/109#comments</comments>
		<pubDate>Sat, 12 Feb 2011 13:56:25 +0000</pubDate>
		<dc:creator><![CDATA[root]]></dc:creator>
				<category><![CDATA[Сеть и интернет]]></category>
		<category><![CDATA[mobile-tech]]></category>
		<category><![CDATA[openwrt]]></category>

		<guid isPermaLink="false">http://tt.erinome.net/?p=109</guid>
		<description><![CDATA[В OpenWrt есть возможность задать мощность Wi-Fi передатчиков роутера. Однако, задается она с помощью не совсем знакомой величины dBm. Оказывается, dBm (или dBmW) &#8211; единица измерения мощности в децибелах на милливатт. Используется она в радиоаппаратуре по причине того, что позволяет &#8230; <a href="https://tt.erinome.net/2011/02/109">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>В OpenWrt есть возможность задать мощность Wi-Fi передатчиков роутера. Однако, задается она с помощью не совсем знакомой величины dBm. Оказывается, dBm (или dBmW) &#8211; единица измерения мощности в децибелах на милливатт. Используется она в радиоаппаратуре по причине того, что позволяет в краткой форме задавать как очень большие, так и очень малые значения мощностей.<span id="more-109"></span></p>
<p>Была найдена сравнительная таблица средних значений мощностей беспроводных устройств:</p>
<table width="95%" border="1">
<thead>
<tr>
<th scope="col" nowrap="nowrap">Мощность, dBm</th>
<th scope="col" nowrap="nowrap">Мощность, Вт</th>
<th scope="col" nowrap="nowrap">Комментарий</th>
</tr>
</thead>
<tbody>
<tr>
<td>80 dBm</td>
<td>100 kW</td>
<td>Typical transmission power of FM radio station with 50 km range</td>
</tr>
<tr>
<td>60 dBm</td>
<td>1 kW</td>
<td>Typical combined radiated RF power of microwave oven elements</p>
<p>Maximum allowed output RF power from a ham radio transceiver (rig) without special permissions</td>
</tr>
<tr>
<td>50 dBm</td>
<td>100 W</td>
<td>Typical thermal radiation emitted by a human body</p>
<p>Typical maximum output RF power from a ham radio transceiver (rig)</td>
</tr>
<tr>
<td>40 dBm</td>
<td>10 W</td>
<td>Typical PLC (Power Line Carrier) Transmit Power</td>
</tr>
<tr>
<td>37 dBm</td>
<td>5 W</td>
<td>Typical maximum output RF power from a hand held ham radio transceiver (rig)</td>
</tr>
<tr>
<td>36 dBm</td>
<td>4 W</td>
<td>Typical maximum output power for a Citizens&#8217; band radio station (27 MHz) in many countries</td>
</tr>
<tr>
<td>33 dBm</td>
<td>2 W</td>
<td>Maximum output from a UMTS/3G mobile phone (Power class 1 mobiles)</p>
<p>Maximum output from a GSM850/900 mobile phone</td>
</tr>
<tr>
<td>30 dBm</td>
<td nowrap="nowrap">1 W = 1000 mW</td>
<td>Typical RF leakage from a microwave oven &#8211; Maximum output power for DCS 1800 MHz mobile phone</p>
<p>Maximum output from a GSM1800/1900 mobile phone</td>
</tr>
<tr>
<td>27 dBm</td>
<td>500 mW</td>
<td>Typical cellular phone transmission power</p>
<p>Maximum output from a UMTS/3G mobile phone (Power class 2 mobiles)</td>
</tr>
<tr style="color: black; background-color: #d3d3d3;">
<td>26 dBm</td>
<td>400 mW</td>
<td>Access point for Wireless networking</td>
</tr>
<tr>
<td>25 dBm</td>
<td>316 mW</td>
</tr>
<tr>
<td>24 dBm</td>
<td>250 mW</td>
<td>Maximum output from a UMTS/3G mobile phone (Power class 3 mobiles)</td>
</tr>
<tr style="color: black; background-color: #d3d3d3;">
<td>23 dBm</td>
<td>200 mW</td>
<td>Maximum output in interior environment from a WiFi 2.4Ghz antenna (802.11b/g/n).</td>
</tr>
<tr>
<td>22 dBm</td>
<td>160 mW</td>
</tr>
<tr>
<td>21 dBm</td>
<td>125 mW</td>
<td>Maximum output from a UMTS/3G mobile phone (Power class 4 mobiles)</td>
</tr>
<tr>
<td>20 dBm</td>
<td>100 mW</td>
<td>Bluetooth Class 1 radio, 100 m range</p>
<p>Maximum output power from unlicensed AM transmitter per U.S. Federal Communications Commission (FCC) rules 15.219. Typical wireless router transmission power.</td>
</tr>
<tr style="color: black; background-color: #d3d3d3;">
<td>15 dBm</td>
<td>32 mW</td>
<td>Typical WiFi transmission power in laptops.</td>
</tr>
<tr>
<td>10 dBm</td>
<td>10 mW</td>
</tr>
<tr>
<td>6 dBm</td>
<td>4.0 mW</td>
</tr>
<tr>
<td>5 dBm</td>
<td>3.2 mW</td>
</tr>
<tr>
<td>4 dBm</td>
<td>2.5 mW</td>
<td>Bluetooth Class 2 radio, 10 m range</td>
</tr>
<tr>
<td>3 dBm</td>
<td>2.0 mW</td>
<td>More precisely (to 8 decimal places) 1.9952623 mW</td>
</tr>
<tr>
<td>2 dBm</td>
<td>1.6 mW</td>
</tr>
<tr>
<td>1 dBm</td>
<td>1.3 mW</td>
</tr>
<tr>
<td>0 dBm</td>
<td nowrap="nowrap">1.0 mW = 1000 µW</td>
<td>Bluetooth standard (Class 3) radio, 1 m range</td>
</tr>
<tr>
<td>−1 dBm</td>
<td>794 µW</td>
</tr>
<tr>
<td>−3 dBm</td>
<td>501 µW</td>
</tr>
<tr>
<td>−5 dBm</td>
<td>316 µW</td>
</tr>
<tr>
<td>−10 dBm</td>
<td>100 µW</td>
<td>Typical maximum received signal power (−10 to −30 dBm) of wireless network</td>
</tr>
<tr>
<td>−20 dBm</td>
<td>10 µW</td>
</tr>
<tr>
<td>−30 dBm</td>
<td nowrap="nowrap">1.0 µW = 1000 nW</td>
</tr>
<tr>
<td>−40 dBm</td>
<td>100 nW</td>
</tr>
<tr>
<td>−50 dBm</td>
<td>10 nW</td>
</tr>
<tr>
<td>−60 dBm</td>
<td nowrap="nowrap">1.0 nW = 1000 pW</td>
<td>The Earth receives one nanowatt per square metre from a magnitude +3.5 star</td>
</tr>
<tr style="color: black; background-color: #d3d3d3;">
<td>−70 dBm</td>
<td>100 pW</td>
<td>Typical range (−60 to −80 dBm) of wireless received signal power over a network (802.11 variants)</td>
</tr>
<tr>
<td>−80 dBm</td>
<td>10 pW</td>
</tr>
<tr>
<td>−100 dBm</td>
<td>0.1 pW</td>
</tr>
<tr>
<td>−111 dBm</td>
<td>0.008 pW = 8 fW</td>
<td>Thermal noise floor for commercial GPS single channel signal bandwidth (2 MHz)</td>
</tr>
</tbody>
</table>
<p>Относящиеся к беспроводным сетям строки выделены серым. В большинстве случаев встраиваемые в роутер точки доступа имеют мощность в пределах 20-30 dBm, и, конечно же, по умолчанию они настроены на максимум. И вот что интересно: как показывает опыт, для 802.11a/b/g при нахождении ноутбука в пределах квартиры для качественной связи хватает лишь 10-15 dBm. Казалось бы, отличие на десяток каких-то dBm &#8211; не такая уж и большая разница, так ведь нет &#8211; это разница между 10 и 200 мВт.</p>
<p>OpenWrt допускает настройку мощности передатчиков, что предоставляет каждому возможность подобрать такие индивидуальные значения, которые обеспечат устойчивую беспроводную связь при минимальном уровне сигналов.</p>
]]></content:encoded>
			<wfw:commentRss>https://tt.erinome.net/2011/02/109/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
