Совместно используйте файлы между 2 компьютерами через Bluetooth от терминала

У меня есть два смежных компьютера один под управлением Linux с консольным режимом и один с окнами 10. Я хочу передать файлы между этими двумя, и у них обоих есть возможности Bluetooth. Сначала, я думал о включении usb, и выполните следующую процедуру:

fdisk -l
mount /dev/sdc1 /media
mkdir /media/myfiles01
cp ~/file1 ~/file2 /media/myfiles01
cd ~
umount /dev/sdc1

И затем, я удалил бы USB-устройство и включил бы его в другой компьютер и передал бы файлы ему; Но я думал, почему я не использую Bluetooth, чтобы совместно использовать файлы непосредственно?

Я могу использовать Bluetooth от терминала, поскольку у меня нет GUI на том компьютере? У меня нет предшествующего опыта в этом, поэтому если это возможно, мне нужен подробный ответ.

8
задан 29 October 2016 в 04:02

1 ответ

Во-первых, Вы должны apt install bluez-tools obexpushd.

Чтобы отправить и получить файлы, необходимо настроить и соединить устройства сначала.

УСТАНОВКА


от Arch Wiki - Bluetooth:

Bluetoothctl

Запустите bluetoothctl интерактивная команда. Там можно ввести help получить список доступных команд.

  • Поверните питание к контроллеру на путем ввода power on. Это прочь по умолчанию.
  • Войти devices получить MAC-адрес устройства, с которым можно соединиться.
  • Перейдите к режиму обнаружения устройств с scan on управляйте, не находится ли устройство еще в списке.
  • Включите агент с agent on.
  • Войти pair MAC Address сделать соединение (работы заполнения клавишей Tab).
  • При использовании устройства без PIN, возможно, должен вручную доверять устройству, прежде чем оно сможет снова соединиться успешно. Войти trust MAC Address сделать так.
  • Наконец, использовать connect MAC_address установить соединение.

Последние два пункта маркированного списка не необходимы для отправить части передачи файлов, но Вам нужно connect позже для получить части.

Сессия в качестве примера может посмотреть этот путь:

# bluetoothctl 
[NEW] Controller 00:10:20:30:40:50 pi [default]
[bluetooth]# agent KeyboardOnly 
Agent registered
[bluetooth]# default-agent 
Default agent request successful
[bluetooth]# scan on
Discovery started
[CHG] Controller 00:10:20:30:40:50 Discovering: yes
[NEW] Device 00:12:34:56:78:90 myLino
[CHG] Device 00:12:34:56:78:90 LegacyPairing: yes
[bluetooth]# pair 00:12:34:56:78:90
Attempting to pair with 00:12:34:56:78:90
[CHG] Device 00:12:34:56:78:90 Connected: yes
[CHG] Device 00:12:34:56:78:90 Connected: no
[CHG] Device 00:12:34:56:78:90 Connected: yes
Request PIN code
[agent] Enter PIN code: 1234
[CHG] Device 00:12:34:56:78:90 Paired: yes
Pairing successful
[CHG] Device 00:12:34:56:78:90 Connected: no
[bluetooth]# connect 00:12:34:56:78:90
Attempting to connect to 00:12:34:56:78:90
[CHG] Device 00:12:34:56:78:90 Connected: yes
Connection successful

Делать изменения постоянными и чтобы иметь устройство, активное после перезагрузки, a udev правило необходимо:

/etc/udev/rules.d/10-local.rules

# Set bluetooth power up
ACTION=="add", KERNEL=="hci0", RUN+="/usr/bin/hciconfig %k up"

Подсказка: замена KERNEL=="hci0" с KERNEL=="hci[0-9]*" соответствовать всем интерфейсам BT.

После suspend/resume-cycle устройство может быть включено автоматически с помощью пользовательского systemd сервиса:

/etc/systemd/system/bluetooth-auto-power@.service

[Unit]
Description=Bluetooth auto power on
After=bluetooth.service sys-subsystem-bluetooth-devices-%i.device suspend.target

[Service]
Type=oneshot
ExecStart=/usr/bin/hciconfig %i up

[Install]
WantedBy=suspend.target

Включите экземпляр единицы с помощью названия bluetooth-устройства, например bluetooth-auto-power@hci0.service.


Теперь Ваши устройства соединяются. Проверьте, что Вы видите другой с bt-device -l.

ОТПРАВИТЬ

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

Acquiring proxy failed: Error calling StartServiceByName for org.bluez.obex: GDBus.Error:org.freedesktop.systemd1.LoadFailed: Unit dbus-org.bluez.obex.service failed to load: No such file or directory.

Сделайте необходимое systemd изменения с

systemctl --user start obex
sudo systemctl --global enable obex

Это удостоверяется, что можно отправить файлы. A sudo также в первой строке перестанет работать!

Можно отправить файлы теперь bluetooth-sendto --device=12:34:56:78:9A:BC filename filename2. Если передача зависает в 100%, ctrlc завершает ее (или прерывается ранее).

Для знания имени устройства (12:34:56:78:9A:BC) можно выйти bt-device -l.

ПОЛУЧИТЬ


от форума Raspberry Pi:

Мы хотим настроить сервер нажатия OBEX, это то, почему obexpushd был необходим.

Флаг совместимости на демоне Bluetooth необходим, необходимо отредактировать /etc/systemd/system/dbus-org.bluez.service с редактором по Вашему выбору путем добавления -C флаг в конец ExecStart= строка. Это должно быть похожим на это:

ExecStart=/usr/lib/bluetooth/bluetoothd -C

Перезагрузка или перезапуск сервис с sudo systemctl daemon-reload после редактирования. Выберите определенный каталог, куда полученные файлы помещаются, например, sudo mkdir /bluetooth.

Запустите сервер с sudo obexpushd -B -o /bluetooth -n, это должно ответить:

obexpushd 0.11.2 Copyright (C) 2006-2010 Hendrik Sattler
This software comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions.
Listening on bluetooth/[00:00:00:00:00:00]:9

Если это не работает, и Вы добираетесь:

obexpushd 0.11.2 Copyright (C) 2006-2010 Hendrik Sattler
This software comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions.
BtOBEX_ServerRegister: Address already in use
net_init() failed

это могло быть, потому что у Вас есть другой демон или выполнение программы, которое занимает rfcomm канал 9 это obexpushd использование по умолчанию. В этом случае переключите канал к 23 как это:

sudo obexpushd -B23 -o /bluetooth -n

использовать канал 23.

После того как Вы добираетесь obexpushd при выполнении откройте второе окно терминала. Можно проверить, что сервис OBEX регистрируется в

sudo sdptool browse local

Это должно перечислить (на канале 23 в этом случае), среди других, этого:

Service Name: OBEX Object Push
Service Description: a free OBEX server
Service Provider: obexpushd
Service RecHandle: 0x10005
Service Class ID List:
  "OBEX Object Push" (0x1105)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 23
  "OBEX" (0x0008)
Profile Descriptor List:
  "OBEX Object Push" (0x1105)
    Version: 0x0100

В том окне, в то время как obexpushd все еще работает, использовать bluetoothctl установить discoverable on. Теперь пара от Вашего другого устройства. Соединение ДОЛЖНО быть сделано в то время как obexpushd работает, или другая привычка устройства распознает, что сервис доступен. Если телефон уже соединяется, удалите его из своего другого устройства, используйте bluetoothctl удалить его из компьютера Ubuntu и восстановления.

После соединения (последний пункт маркированного списка из вышеупомянутого списка), необходимо смочь получить файлы. Они появятся в /bluetooth каталог. Заметьте, что они будут принадлежать корню, таким образом, Вам будет нужен sudo для доступа к ним. Или можно сделать a chmod 0777 /bluetooth для каталога АТС сети общего пользования, так как аутентификация Bluetooth основана на устройстве и не основана на пользователе так или иначе.

Для автоматизации команды obexpushd создайте файл /etc/systemd/system/obexpush.service

[Unit]
Description=OBEX Push service
After=bluetooth.service
Requires=bluetooth.service

[Service]
ExecStart=/usr/bin/obexpushd -B23 -o /bluetooth -n

[Install]
WantedBy=multi-user.target

Затем установите это для автозапуска с

sudo systemctl enable obexpush

После перезагрузки или перезапуска сервиса с sudo systemctl daemon-reload, необходимо смочь отправить и получить файлы в обоих направлениях теперь.

Не забывайте подключать устройства при попытке получить файлы.

3
ответ дан 23 November 2019 в 05:53

Другие вопросы по тегам:

Похожие вопросы: