Net :: Bluetooth не обнаруживает устройства - PullRequest
0 голосов
/ 04 сентября 2018

Я пытаюсь подключиться к своему LegoBoost в Perl на Debian 4.9.110-3+deb9u4. Это Bluetooth-устройство с низким энергопотреблением (BLE). Я могу обнаружить и подключиться к нему с помощью утилит gatttool и hci*, но мне не повезло с Perl. Я попробовал следующий код:

use Net::Bluetooth;
use Data::Dumper;

print "Get remote devices...\n";
my $rDevice = get_remote_devices();
print Dumper $rDevice;

my $addr = "00:16:53:A5:3E:50";
print "SDP search...\n";
my @spd = sdp_search($addr, "", ""); # LegoBoost
print Dumper \@spd;

возвращает undef и [undef]. Я даже попробовал как root, но не повезло.

Я также пытался подключиться к этому устройству:

print "Connect to device...\n";
my $obj = Net::Bluetooth->newsocket("RFCOMM");
defined($obj) or die "socket error $!\n";
print "Socket got ", Dumper $obj;
system 'lsof', '-p', $$;

my $port = 14;
if($obj->connect($addr, $port) != 0) { die "connect error: $!\n";}
print "Connected...\n";
sleep 5;

#### create a Perl filehandle for reading and writing
my $fd = $obj->perlfh();
print Dumper $fd;
close $fd or die;

Выход:

Connect to device...
Socket got $VAR1 = bless( {
                 'PROTO' => 'RFCOMM',
                 'SOCK_FD' => 4
               }, 'Net::Bluetooth' );
connect error: Host is down

Любая идея приветствуется!

Заранее спасибо!

1 Ответ

0 голосов
/ 07 сентября 2018

Кажется, что Net::Bluetooth для обычных устройств Bluetooth, а не для BLE. Я прочитал источник пакета Perl Net-Bluetooth-0.41. Модуль get_remote_devices модуля определен в Bluetooth.c как функция C. Сначала он вызывает hci_get_routelibbluetooth.so), а затем вызывает hci_inquiry, который запрашивает устройства Bluetooth, но не устройства BLE. (

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...