Working with Linux: USB File Storage Gadget

Working with Linux: USB File Storage Gadget Гаджет
Содержание
  1. Что google считает internal storage
  2. То, что пользователи считают internal storage
  3. Beaglebone black — usb device gadget — ethernet, serial, mass storage
  4. Cloud file backup and storage — dropbox
  5. Configuration
  6. Configuring the ethernet interface on the target
  7. Contacts and more
  8. Creating and mounting the file system
  9. Device tree bindings and customization
  10. G_cdc — composite ethernet serial gadget
  11. G_hid — human interface device (hid) gadget
  12. G_ncm — usb cdc ncm subclass ethernet gadget
  13. G_serial — serial device gadget
  14. G_webcam — composite usb audio and video class gadget
  15. Installation
  16. Internal storage
  17. Iomux configuration
  18. Opening a console shell via usb serial
  19. Platform driver mapping
  20. Settings and apps
  21. Unloading the ethernet gadget
  22. Unloading the mass-storage gadget
  23. Unloading the serial gadget
  24. Usb file storage gadget
  25. Вопросы без ответов. синхронизация контактов. часть 2. — android.
  26. Где хранится internal storage … иногда
  27. Где хранится internal storage … остальное время
  28. Должен ли я делать файлы во внутреннем хранилище world-readable или world-writeable?
  29. Исследуем internal storage
  30. Как запретить пользователям rooted устройств доступ к моим файлам во внутреннем хранилище?
  31. Ограничения внутреннего хранилища
  32. Usb device enabling and definition
  33. Definition of the usb device

Что google считает internal storage

Увы, то, что видят пользователи это не то же самое, что Android SDK считает «внутренним хранилищем», что приводит к некоторой путанице. Если вы читали документацию на Android по внутреннему хранилищу, то это описание … как минимум туманно (прим. текст изменился со времени написания статьи):

Вы можете сохранять файлы непосредственно во внутренней памяти устройства. По умолчанию файлы, сохраненные во внутреннем хранилище, являются приватными для вашего приложения, и другие приложения не могут получить к ним доступ (также как и пользователь). Когда пользователь удаляет приложение, эти файлы удаляются.

По правде говоря, Android SDK определяет «внутреннее хранилище» как особый каталог, уникальный для вашего приложения, где ваше приложение может размещать файлы. Как было предложено в документации, эти файлы по умолчанию предназначены для чтения и записи для вашего приложения и запрещены для любого другого приложения (исключение: пользователи, работающие с файловыми менеджерами с привилегиями суперпользователя на rooted устройствах могут получить доступ ко всему).

В Context есть несколько базовых методов, которые предоставляют вам доступ к внутреннему хранилищу, в том числе:

Другие методы будут опираться на них, такие как openOrCreateDatabase(). Другие классы также будут полагаться на них, такие как SQLiteOpenHelper и SharedPreferences.

То, что пользователи считают internal storage

В зависимости от модели вашего устройства пользователи в конечном итоге придут в «Настройки» —> «Хранилище на этом устройстве» (Settings —> Storage on their device) или в эквивалентном месте, и могут видеть экран, который описывает «Внутреннее хранилище».

Пользователь думает, что вся встроенная флешка — это «внутреннее хранилище» (Internal Storage). К счастью, Google начал менять этот термин с Android 8.0, перейдя к «general storage» вместо «internal storage».

Тем не менее, пользователи могут по-прежнему видеть «внутреннее хранилище» в таких местах, как окно проводника в Windows, когда их устройство подключено через USB.

Beaglebone black — usb device gadget — ethernet, serial, mass storage

Как вы уже заметили из заголовка сегодня мы будем использовать USB Device свойства МП AM3359. Вообще на самом деле оба порта USB могут работать в режиме OTG, но для упрощения схемотехники один из них сделан так чтобы работать в режиме Device, а второй в режиме Host. Если с режимом Host в ОС Linux всё более или менее понятно, то с режимом Device есть некоторые особенности.

Введение
Как уже я рассказывал в статье про загрузку МП AM3359, при подключении USB кабеля устройство эмулирует сетевую карту. Так вот существует возможность подобной эмуляции и для ОС Linux. Как отмечалось выше USB может работать в двух режимах:
в режиме Host драйвер USB ожидает подключения, и в соответствии с идентификатором подключённого устройства выбирает драйвер;
в режиме Device в зависимости от выбранного драйвера, USB блок определяется под соответствующим идентификатором и работает в определённом режиме приёма-передачи. Я не буду вдаваться глубоко в теорию, об этом вам расскажет оригинальный мануал на МП, а также вводная информация о протоколе, откуда вы можете подчерпнуть полезны ссылок на документацию. Вместо этого я лишь коротко опишу основные положения касательно практической части применения USB Device для платы BeagleBone Black.

Настройка ядра
Для того чтобы воспользоватся подобным функционалом его необходимо включить в ядре Linux. Поэтому перейдём к настройкам ядра:

# cd kernel/kernel; make -j9 ARCH=arm CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- menuconfig

После в появившемся меню необходимо активировать следующие пункты:

Symbol: USB_GADGET [=y]
Prompt: USB Gadget Support
Defined at drivers/usb/gadget/Kconfig:16
Depends on: USB_SUPPORT
Location:
-> Kernel configuration
-> Device Drivers
-> USB support (USB_SUPPORT [=y])

Для поддержки USB Gadget, без которого собственно у нас ничего не заработает.
Prompt: Driver Mode
Defined at drivers/usb/musb/Kconfig:68
Depends on: USB_SUPPORT && USB_MUSB_HDRC
Location:
-> Kernel configuration
-> Device Drivers
-> USB support (USB_SUPPORT [=y])
-> Inventra Highspeed Dual Role Controller (TI, ADI, …) 

Для поддержки 2 режимного контроллера в ядре Linux.
Symbol: USB_G_MASS_STORAGE_CDC [=m]
Prompt: CDC ACM Mass Storage configuration
Defined at drivers/usb/gadget/Kconfig:814
Depends on: <choice> && BLOCK
Location:
-> Kernel configuration
-> Device Drivers
-> USB support (USB_SUPPORT [=y])
-> USB Gadget Support (USB_GADGET [=y])
-> USB Gadget Drivers (<choice> [=m])
-> USB Gadget Drivers (<choice> [=m])

Выбрать для поддержки CDC и Mass Storage профиля.
Symbol: USB_ETH [=m]
Prompt: Ethernet Gadget (with CDC Ethernet support)
Defined at drivers/usb/gadget/Kconfig:628
Depends on: <choice> && NET
Location:
-> Kernel configuration
-> Device Drivers
-> USB support (USB_SUPPORT [=y])
-> USB Gadget Support (USB_GADGET [=y])
-> USB Gadget Drivers (<choice> [=m])

А это для поддержки Ethernet соединения
Symbol: USB_G_SERIAL [=m]
Type  : tristate
Prompt: Serial Gadget (with CDC ACM and CDC OBEX support)
Defined at drivers/usb/gadget/Kconfig:751
Depends on: <choice>
Location:
-> Device Drivers
-> USB support (USB_SUPPORT [=y])
-> USB Gadget Support (USB_GADGET [=y])
-> USB Gadget Drivers (<choice> [=m])
Selects: USB_LIBCOMPOSITE [=m]

Для поддержки последовательного порта

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

После вышеуказанных настроек необходимо собрать ядро Linux и установить его в соответствии со статьей про установку ядра, а также не забыть установить модули ядра (это отмечалось в статье про установку базовой системы). Итак ядро готово к использованию USB Device режима, теперь можно рассмотреть всё это с практической части.

Модуль g_serial.ko
Модуль отвечающий за последовательный порт. Информация о модуле:

# modinfo g_serial
filename:       /lib/modules/3.8.13-00715-g836d639/kernel/drivers/usb/gadget/g_serial.ko
license:        GPL
author:         David Brownell
author:         Al Borchers
description:    Gadget Serial v2.4
license:        GPL
author:         Felipe Balbi
srcversion:     A7058FBDCF3A5E10C147597
depends:        libcomposite
intree:         Y
vermagic:       3.8.13-00715-g836d639 SMP mod_unload modversions ARMv7 thumb2 p2v8 
parm:           idVendor:USB Vendor ID (ushort)
parm:           idProduct:USB Product ID (ushort)
parm:           bcdDevice:USB Device version (BCD) (ushort)
parm:           iSerialNumber:SerialNumber string (charp)
parm:           iManufacturer:USB Manufacturer string (charp)
parm:           iProduct:USB Product string (charp)
parm:           use_acm:Use CDC ACM, default=yes (bool)
parm:           use_obex:Use CDC OBEX, default=no (bool)
parm:           n_ports:number of ports to create, default=1 (uint)

Гаджет:  Online Teaching Gadgets - Best Gadgets For Online Classes

Модуль прост в использовании:

# modprobe g_serial

После подключения модуля в списке USB устройств ПК появится последовательный порт:

$ lsusb

Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 011: ID 0525:a4a7 Netchip Technology, Inc. Linux-USB Serial Gadget (CDC ACM mode)
Bus 002 Device 005: ID 0403:6010 Future Technology Devices International, Ltd FT2232C Dual USB-UART/FIFO IC

Также появится сообщение о его подключении в dmesg:

[ 8056.520011] usb 2-1.1: New USB device found, idVendor=0525, idProduct=a4a7
[ 8056.520014] usb 2-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 8056.520017] usb 2-1.1: Product: Gadget Serial v2.4
[ 8056.520020] usb 2-1.1: Manufacturer: Linux 3.8.13-00715-g836d639 with musb-hdrc
[ 8056.520211] usb 2-1.1: usb_probe_device
[ 8056.520215] usb 2-1.1: configuration #2 chosen from 1 choice
[ 8056.520539] usb 2-1.1: adding 2-1.1:2.0 (config #2, interface 0)
[ 8056.520703] cdc_acm 2-1.1:2.0: usb_probe_interface
[ 8056.520709] cdc_acm 2-1.1:2.0: usb_probe_interface — got id
[ 8056.520713] cdc_acm 2-1.1:2.0: This device cannot do calls on its own. It is not a modem.
[ 8056.520761] cdc_acm 2-1.1:2.0: ttyACM0: USB ACM device
[ 8056.521129] usb 2-1.1: adding 2-1.1:2.1 (config #2, interface 1)

К порту можно подключится. Также будет сообщение и от ядра Linux в BeagleBone Black:

[ 1391.712610]  gadget: high-speed config #2: CDC ACM config
[ 1391.712634]  gadget: activate acm ttyGS0

Видео примера работы этого гаджета:

Модуль g_mass_storage.ko

Модуль отвечающий за Mass Storage, или по русски за класс USB — накопитель.

Вот информация о модуле:

Модуль чуть сложнее в использовании (для примера возьмём первый раздел нашей карты памяти, где находится U-Boot и MLO):

# modprobe g_mass_storage file=/dev/mmcblk0p1

Аргумент file служит для указания файла, устройства. При подключении в списках устройств появится носитель:

А также будет сообщение в dmesg:

Устройство будет доступно как обыкновенный диск, также будет сообщение в BeagleBone Black:

Видео:

Модуль g_ether.ko

Этот модуль отвечает за эмуляцию RNDIS/Ethernet устройств. Вот информация по этому модулю:

Использование аналогично g_serial:

# modprobe g_ether

При подключении будет отображён тип и класс устройства:

В dmesg, будет же сообщение о новом сетевом интерфейсе, который можно использовать:

В утилите ifconfig ПК можно будет обнаружить новое сетевое устройство (на логе оно уже настроено):

Это также относится и к BeagleBone Black в dmesg который будет отображено сообщение о сетевом устройстве:

ifconfig также показывает новое сетевое соединение (на логе оно ещё не настроено):

Активируем соединение:

# ifconfig usb0 192.168.7.2 up

После чего можно проверить с ПК как плата отвечает на запросы (ping):

Так и в обратном направлении с платы на ПК:

Cloud file backup and storage — dropbox

Whether you’re trying to back up an image collection, a large video, a CAD file or entire folders you can store all your important files safely in your Dropbox account. With access to your Dropbox files from any device, operating system, or platform, you can work and collaborate on projects with ease.

No internet connection? No problem. With Dropbox, you can work on files while offline, from your desktop computer, Android, iPhone, or iPad. Once you get back online, your files and folders will automatically sync with any edits you made when you weren’t connected.

Configuration


Here you can see module-specific configuration.

Configuring the ethernet interface on the target

Give the network interface usb0 an IP address, for example:

Target device
# ifconfig usb0 192.168.44.30 netmask 255.255.255.0

Contacts and more

Google also makes it very easy to customize all your contacts using the company’s own cloud services. Follow the instructions below to ensure you never lose contact information again.

  1. Open the Settings app.
  2. Hit Accounts.
  3. Select your Google account of choice.
  4. Go to Account sync.
  5. Toggle on Contacts (and any other service you wish to).

And that’s it! Your device should be pretty much all backed up now. Unless, of course, you want to use a third-party service instead of Google’s own.

Creating and mounting the file system

Linux hosts

A Linux host computer recognizes the target as a new SCSI device. Linux assigns a device node in the form sdx, where x is a letter index, and the partition appears as sdx1. To see exactly which device the host assigned, print out the system log messages with:

Host PC

Device tree bindings and customization

The i.MX6 USB OTG interface device tree binding is documented at Documentation/devicetree/bindings/usb/usbmisc-imx.txt.

The USB OTG interface is defined in the i.MX6 CPU, ConnectCore 6 system-on-module, and ConnectCore 6 SBC device tree files.

G_cdc — composite ethernet serial gadget

(available on limited devices)

The g_cdc gadget supports two functions in one configuration:

Example:

on target device load module modprobe g_cdc

on host device (ie PC) a USB CDC ACM device (VID:PID 0525:a4aa) will appear

Linux USB Host notes:
the cdc_acm driver will enumerate this device as ‘/dev/ttyACM<n>’
the cdc_ether driver will enumerate this device as a ‘usb<n>’ network device

Windows USB Host notes:
A CDC Composite Gadget device will appear in Device Manager

G_hid — human interface device (hid) gadget

(available on limited devices)

The HID gadget driver provides generic emulation of USB Human Interface Devices (HID), for example keyboards, mice, touchscreens, etc

Example:

on target device load module modprobe g_hid

module parameters can specify the VID, PID, device version, manufacturer string, product string, serial number

G_ncm — usb cdc ncm subclass ethernet gadget

(available on limited devices)

The g_ncm gadget driver provides a a USB CDC NCM subclass. NCM is an advanced protocol for Ethernet encapsulation, allowing grouping of several ethernet frames into one USB transfer with various alignment possibilities.

Example:

on target device load module modprobe g_ncm

on host device (ie PC) a ‘Linux-USB Ethernet Gadget’ device (VID:PID 0525:a4a1 by default) will appear
on target device (Gateworks board) a usb<n> network device will be created
module parameters can specify the VID, PID, device version, manufacturer string, product string, serialnumber
module parameters can specify the device and host ethernet addresses and the queue length multiplier used at high speeds

Linux USB Host notes:
the cdc_ncm driver will enumerate the device and create a /dev/video<n> video capture device

Windows USB Host notes:
A NCM Gadget device will appear in Device Manager

G_serial — serial device gadget

The Serial Gadget supports CDC-ACM and CDC-OBEX which can inter-operate with the MS-Windows hosts or with Linux hosts using the ‘cdc-acm’ driver to create a ‘USB-to-Serial’ connection.

Example:

modprobe g_serial

module parameters can specify the VID, PID, device version, manufacturer string, product string, serialnumber, whether or not to use CDC ACM, CDC OBEX, and the number of ports to create.

G_webcam — composite usb audio and video class gadget

(currently not available in LEDE)

The g_webcam gadget driver provides a Composite USB Audio and Video Class device.

Example:

on target device load module modprobe g_webcam

on host device (ie PC) a ‘Linux Foundation Webcam Gadget’ device (VID:PID 1d6b:0102 by default) will appear
on target device (Gateworks board) a /dev/video<n> device will be created and avialable as a Video4Linux output device supporting 320/240 YUYV video
module parameters can specify the VID, PID, device version, manufacturer string, product string, serialnumber

Гаджет:  Создание гаджета Windows 7 - Web - Программирование - Статьи - GT SoftWare Group

Linux USB Host notes:
the uvcvideo driver will enumerate the device and create a /dev/videoX (X= number) video capture device

Windows USB Host notes:
A USB Composite device will appear in Device Manager
A UVC Camera device will appear under Imaging devices in the device manager and be available to capture video

Installation

To get this working on a Qualcomm-Atheros AR9331 device I had to install kmod-usb-chipidea instead of the kmod-usb-gadget (that was not available) and then I installed my gadget driver of choice, kmod-usb-gadget-eth.

That device has 4 MB of flash, so it was a bit more involved than just using opkg, but it’s not relevant for enabling USB guest feature.

Internal storage

Существует много путаницы в отношении модели хранилища Android. Путаницы стало значительно больше с изменениями Android 4.4 в Storage Model, и с тех пор ситуация не улучшилась. Есть бесчисленное множество вопросов на Stack Overflow и тому подобных ресурсах, где люди явно не совсем разбираются в различных моделях хранилищ Android.

Iomux configuration

ConnectCore 6 system-on-module device tree

Opening a console shell via usb serial

The following instructions describe how to open a console shell via the USB serial port.

  • On the target side, execute a console on the serial gadget with the getty command (baudrate is mandatory but irrelevant):
Target device
# setsid getty -L -l /bin/sh -n 115200 /dev/ttyGS0

The setsid command avoids permission problems when running getty from an interactive shell.

  • On the host side, open a minicom or putty session on the USB serial port /dev/ttyACM0 to access the shell.

Note Settings like speed or parity for the serial terminal session (and for the getty command) are irrelevant, as the communication takes place at USB speed. The serial communication settings are emulated.

Platform driver mapping

The i.MX6 USB device driver is located at drivers/usb/.

Settings and apps

To back up your phone’s settings and apps, you’ll want to use Google’s own backup solution. This service essentially backs up the apps you use and the settings that you have selected in most Google apps, making it easy to restore those settings on a new phone. Follow the instructions below to activate it:

  1. Open your smartphone’s Settings app.
  2. Scroll down to Google and tap on it.
  3. Tap on Backup.
  4. Toggle on the Back up to Google Drive switch and add your account, if it’s not there already.

You can also use Google One:

  1. Get the Google One app and open it.
  2. Go to the Storage tab.
  3. Scroll down to the Device Backup section and find your phone.
  4. Select Backup settings.
  5. Toggle on the data you want backed up.

Unloading the ethernet gadget

To unload the USB Device gadget:

# rmmod g_ether
# rmmod usb_f_rndis
# rmmod usb_f_ecm
# rmmod libcomposite

Unloading the mass-storage gadget

To unload the USB mass-storage gadget from the system:

# rmmod g_mass_storage
# rmmod libcomposite

Unloading the serial gadget

To unload the USB serial gadget from the system:

Target device
# rmmod g_serial
# rmmod usb_f_acm
# rmmod libcomposite

Usb file storage gadget

Today I have enabled the USB gadget support for file storage. The intention is to be able to export files via the USB device interface to a PC.

The file storage gadget must be enabled at the kernel config menu:
USB support -> Support for USB gadgets -> File-backed storage gadget

Note that only one USB gadget may be enabled at the same time. If multiple gadgets must be supported, all of them must be configured as modules, so I had to remove built-in support for ethernet gadget from the kernel. Switching the USB function requires removing and installing the proper modules.

The module for file storage is g_file_storage.o and is installed this way:
insmod g_file_storage.o file=/results.bin stall=0

The ‘stall’ argument is necessary for the USB disk to be properly detected by windows. Linux does not require this argument and the drive can be mounted without problem. If ‘stall’ is not set to zero and the gadget is connected to a windows PC, the following messages appear:
g_file_storage pxa2xx_udc: full speed config #1
udc: pxa2xx_ep_disable, ep1in-bulk not enabled
udc: pxa2xx_ep_disable, ep2out-bulk not enabled
udc: USB reset
udc: USB reset

repeating every few seconds.

For the ‘stall’ option to be available, it is necessary to enable the ‘file-backed storage gadget in test mode’ option in the kernel configuration.

Multiple files may be specified when the gadget module is installed, thus creating multiple drives visible to the remote host.

Any volume size may be created but it seems that Windows assigns floppy drive letters if the volume size is similar to a floppy device size. I have tested 720KB and 1440KB only.

The volume may be declared as read-only by using the «ro=1» parameter at the insmod.

The backend file may be either a disk partition or a file image.
An initial filesystem image can be created this way:

# dd if=/dev/zero of=results.bin bs=512 count=2880
# mkdosfs results.bin

Then, loop-mount the image file and populate the filsystem. Here is where problems came: if a process writes a new file to the loop filesystem, the host side of the USB connection (where the file browser runs) does not see the new file, even if the file browser is refreshed. The only workaround is to unplug/plug again the USB cable. This happens even if a ‘sync’ command is run on the tester device.


Also, some inconsistences happen if the USB host side writes to the device. The device doesn’t see the new files, and vice-versa.


In conclusion, it is quite a good method to export only file from a Linux device, but with some limitations on «live» filesystems.




Вопросы без ответов. синхронизация контактов. часть 2. — android.

Купили папе на НГ новый телефон.

вот такой ПРИБЛИЗИТЕЛЬНО. что за модель загадка для нас самих. китайская под(д)елка, но вполне себе.

При втыкании появляется стандартный «диалог» о том ,что 
«ВАМ тут посылка пришла ,
Только я вам её НЕ отдам,
пАтАчуЧтО у вас дОкументов нетУ»

об установке новых ДРАЙВЕРОВ.

1.
и на моё Искреннее удивление предложил поискть здесь :

C:Program FilesCompiled Driver Disk (Android)AndroidSamsung21_Searsburg

,но у меня на компьютере НЕТ такой папки. А она предлагает САМА в ней поискать..
т.е. где-то у неё (у кого у неё?) это(выделенное жирным — сам не знаю что это и откуда) прописано.

2.
В диспетчере Устройств на ЭТОТ МОМЕНТ(пока никаких драйверов предоложено НЕ было)
обнаружилось 4 новых USB устройства :

(скорее всего)Размещение(т.к. только его можно скопировать)
USB-совместимое запоминающее устройство
Драйвер:
C:WINDOWSsystem32driversUSBSTOR.SY (печатал ручками)

3.

4/4 сверху
Размещение:
Linux File-CD Gadget USB Device
код экземпляра устройства:
STORAGEREMOVABLEMEDIA8&2A14CA6A&0&RM

3/4 сверху
Размещение:
Linux File-CD Gadget USB Device
код экземпляра устройства:
STORAGEREMOVABLEMEDIA8&175B19C5&0&RM

2/4 сверху
Размещение:
Размещение 0 (CIF Single Chip )
код экземпляра устройства:
USBVID_093A&PID_24715&BFE1B0B&0&1
Коды (ID) оборудования:
USBVid_093a&PID_2471&Rev_0100
USBVid_093a&PID_2471
1/4 сверху
Размещение:
Размещение 0 (MT65xx Android Phone)
Состояние устройства:
(
Это устройство настроено неправильно. (Код 1)
Нажмите «Переустановить» для переустановки драйверов этого устройства.
)
код экземпляра устройства:
USBVID_0BB4&PID_0C03&MI_016&1E68B3CF&0&0001
Коды (ID) оборудования:
USBVid_0bb4&Pid_0c03&Rev_0255&MI_01
USBVid_0bb4&Pid_0c03&MI_01
совместимые коды (ID)
USBClass_ff&SubClass_42&Prot_01
USBClass_ff&SubClass_42
USBClass_ff

===
надо сказать, что после отказа предоставить драйвера — ну те что
C:Program FilesCompiled Driver Disk (Android)AndroidSamsung21_Searsburg
система тем не менее смогла распознать и установить устройства 4/4 и 3/4

Гаджет:  гаджеты для день рождения на АлиЭкспресс — купить онлайн по выгодной цене

Linux File-CD Gadget USB Device
USBSTORDISK&VEN_LINUX&PROD_FILE-CD_GADGET&REV_00007&20AB2C06&0&0123456789ABCDEF&0
USBSTORDISK&VEN_LINUX&PROD_FILE-CD_GADGET&REV_00007&20AB2C06&0&0123456789ABCDEF&1

2021-01-23_185837 Android Samsung Телефон Диспетчер устройств

Но что это за ДИСКИ такие ? и Как к ним получить доступ — ВОПРОС?
Ни в «Мой Компьютер» Ни где-то ещё НЕ появилось НИЧЕГО, к сожалению.

Так что что бы что-то записать и установить на сей «Samsung»
приходится тупо
вынуть microSDHC
вставить её в компьютер (через кардридер CardReader)
записать на неё вручную всё что необходимо
БЕЗОПАСНО извечь, «ВОИЗБЕЖАНИИ, а то уже был прецедент — сбежал чёрт и украл Луну»(А.иБ.Стругацкие)
вставить назад в телефон.
И вот теперь у нас в телефоне что-то появилось..

Использовать же сей аппарат
просто как USB Storage
не представляется возможным.
И даже в меню никаких подобных настроек найти пока НЕ смог.
ХОТЯ ОНИ И УПОМИНАЮТСЯ!

=================================================================
это было всё что я смог нарыть касаемо железа

А теперь вопросы:

Android синхронизирует контакты через интернет с Контакты.Google — это прекрасно.

1.
Теперь моделируем ситуацию. Мы потеряли телефон.
Кто-то нашёл наш телефон. И ему НЕ нужны наши контакты. Он выделяет их ВСЕ и удаляет.
ВОПРОС:
Как в этом случаем послупит Синхронизация ? — по логике он должна удалить ВСЕ наши контакты на сервере Google. Но это же катастрофа! — как уберечь_ся от такой ВОЗМОЖНОЙ ситуации.

И/или
Синхронизация Телефона с Контакты.Google лишь редактирует и Добавляет контакты С ТЕЛЕФОНА.
А вот УДАЛЯТЬ позволяет только С СЕРВЕРА.
Таким образом мы получили бы определённую ЗАЩИТУ наших контактов от полного удаления.

Иначе получается какой-то Абсорд Абсурдов. Мы потеряли телефон. Но УРА — у нас сохранились все Контакты.на сервере.Google. О Нет где же они?! — их НЕТ. Их тоже нет! 🙁
Представили?!
я не знаю Закрыли ли разработчики эту дыру или нет. — Как известно часто бывает, что нет..

2.
Есть ли какая-то ИДЕАЛЬНАЯ система хранения и синхронизации КОнтактов. Такая,
что бы ДАЖЕ Я
НЕ смог бы найти и заподозрить в ней
НИ ЕДИНОЙ претензии ?
Вот было бы интересно взглянуть.

3.
Ура Заработало!

ищем
[по Коду указанному выше]по Коду указанному выше —
MT65xx Android Phone
код экземпляра устройства: USBVID_0BB4&PID_0C03&MI_016&1E68B3CF&0&0001

нужный Драйвер
Поисковик выдаёт, что это :
usb_driver_MT65xx_Android_ZTE_v821.rar

при втыкании телефона — появляется диалог «Найдено новое устройство» — необходимо установить Драйвера —
И соответсвующий диалог, когда система пытается эти самые драйвера найти.
Подставляем ей Путь куда скачали Сохранили usb_driver_MT65xx_Android_ZTE_v821.rar
И получаем следующие результаты.

PrtSc 2021-03-23 Установка Драйвера MT65xx Android 100%

PrtSc 2021-03-23 Установка Драйвера MT65xx Android _2 100%

4.
Теперь осталось разобраться что такое есть ПО СУТИ
передача Интернета на Android устройство через USB
есть несколько статей на эту тему :
Видео-урок на 14 минут
про который я написал целую статью.

Как передать интернет с ПК на Android через USB и раздать его по Wi-Fi

но я пока е разобрался в теме ПО СУТИ — какие кнопки нажимать меня интересует в последнюю очередь. Мне бы хотелось СУТЬ понять. Что за протоколы/интерфейсы.
(
я использую ActiveSync в связке с Windows Mobile (WM) — и там Интернет через USB передаётся
(как-то сам собой — по умолчанию — и/или если галочка стоит)
)
В сравнении всё всегда становится понятнее.

Где хранится internal storage … иногда

Если вы просматриваете различные сообщения в блогах, ответы на StackOverflow и книги, выпущенные в 2021 году или ранее, вам сообщается, что «внутреннее хранилище» вашего приложения находится по адресу: /data/data/your.application.package.name.

Внутри будут некоторые каталоги, автоматически созданные Android, поскольку вы используете некоторые из методов Context. Например, getFilesDir() возвращает объект File, указывающий на каталог files/ во внутреннем хранилище вашего приложения.

Где хранится internal storage … остальное время

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

NEVER HARDCODE PATHS.

Время от времени я вижу, что разработчики делают что-то вроде этого:

File f=new File(«/data/data/their.app.package.name/files/foo.txt»);

Это не преступление, это хуже, это — ошибка.

Правильный ход, да и писать меньше:

File f=new File(getFilesDir(), «foo.txt»);

Должен ли я делать файлы во внутреннем хранилище world-readable или world-writeable?

О, $БОГИ, нет. Используйте FileProvider и обслуживайте этот контент с помощью реализации ContentProvider. После этого вы, по крайней мере, имеете возможность использовать систему разрешений Android для управления доступом к этим файлам, в отличие от вашего варианта, когда любое приложение в системе может испортить эти файлы.

Не советую.

Исследуем internal storage

Device File Explorer tool в Android Studio 3.0 может просматривать все внутренние хранилища на эмуляторе, а также внутреннее хранилище отлаживаемых приложений на продакшн устройствах.

В командной строке вы можете использовать adb с опцией run-as.

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

adb shell ‘run-as your.application.package.name cp /data/data/your.application.package.name/databases/dbname.db /sdcard’

Обратите внимание, что:

Как запретить пользователям rooted устройств доступ к моим файлам во внутреннем хранилище?

Просто не помещайте файлы во внутреннее хранилище. Пользователи rooted устройств могут получить доступ к тому, что им нужно на устройстве, поэтому единственный способ предотвратить их доступ к вашим данным — не иметь их на устройстве.

Некоторые разработчики попытаются зашифровать свои файлы с помощью жестко запрограммированного пароля, чтобы пользователи rooted устройств не могли использовать эти файлы. Это создаст эффект «лежачего полицейского» на короткое время. Все, что требуется, — это один заинтересованный в реверс-инжиниринге вашего приложения человек, определивший, как расшифровать эти файлы, а затем написавший сообщение в блоге или форуме о том, как это сделать.

В целом, относительно мало людей с rooted устройствами — я оцениваю их на уровне менее 1%. ИМХО, вы преуспеете больше, сосредоточив свою инженерную работу на написании лучшего приложения, вместо того, чтобы тратить время на защиту от рутованных устройств.

Ограничения внутреннего хранилища

На старых устройствах Android 1.x и 2.x внутреннее хранилище обычно находилось в выделенном разделе файловой системы, и этот раздел обычно был довольно крошечным. HTC Dream (a.k.a., T-Mobile G1), оригинальное Android-устройство, обладал огромными 70 МБ встроенной памяти для использования всеми приложениями (это не опечатка, в то время мы измеряли память в мегабайтах).

К тому времени, когда вышли 2.3 устройства, внутреннее хранилище могло быть размером 1 ГБ.

Android 3.0 изменил модель хранилища, так как внутреннее хранилище стало больше объемом. У устройств, которые рекламируют как имеющее 4 ГБ, 8 ГБ, 16 ГБ и т.д. пространства для хранения, обычно имелось все это (минус существующее содержимое) доступное для внутреннего хранилища. Мы рассмотрим, что изменилось в Android 3.0 и его влияние на модель хранилища в следующих постах про внешнее хранилище.

Для Android 1.x и 2.x внутреннее хранилище было действительно только для небольших файлов, и вам нужно было использовать внешнее хранилище для всего остального. Android 3.0 означает, что для большинства устройств и большинства пользователей внутреннее хранилище отлично подходит для файлов, которые не предназначены для обычного использования другими приложениями или доступны пользователю независимо от вашего приложения.

Однако некоторые опытные пользователи обнаруживают, что даже on-board flash недостаточна для того, что они хотят хранить, поэтому они переходят на съемные хранилища… которые представляют собой банку с червями (прим. имеются в виду ἕλμινς) — источник многих непредсказуемых и сложных проблем.

Usb device enabling and definition

ConnectCore 6 SBC device tree

Definition of the usb device

Common i.MX6 device tree

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