LINUX.ORG.RU

Сообщения leet27

 

Модификация заголовков входящих IPv4 пакетов через iptables

Сап, лор.

Есть необходимость модифицировать входящие/исходящие пакеты ip по некоторой логике (не NAT и прочее). Интернеты говорят, что для этого можно использовать nf queue или match-модуль для iptables. Для последнего нашлось несколько тестовых/примерных реализаций, напр, https://github.com/vt-alt/tripso. Этот проект оперирует достаточно сложными (в данном случае) вещами - метки безопасности, у них какой-то там формат и прочее, поэтому я сильно упростил код, чтобы просто понять, как оно работает. А оно не работает. Подробнее:

  1. Исходящие пакеты:
  • Правим код, убираем проверки на наличие security options в заголовке ip и просто в ip_hdr->check пишем 0. Добавляем отладочный вывод, чтобы убедиться, что код отрабатывает.
  • Подключаем-запускаем # iptables -t security -I OUTPUT -j TRIPSO --to-astra
  • Сеть не фунциклирует, понятно. # tcpdump -w ~/dump.pcap, видим все исходящие пакеты с checksum == 0

Т.е. для исходящих пакетов все работает.

  1. Входящие пакеты:
  • Ребутим (не получилось корректно выгрузить, неважно), запускаем для входящих # iptables -t security -I INPUT -j TRIPSO --to-cipso
  • Сеть жива. tcpdump показывает, что все КС на месте, никаких нулей. dmesg показывает, что код модуля работает.

Т.е. для входящих пакетов код обработки вызывается, модифицирует пакет, а пакет волшебным образом идет дальше по стеку в первозданном виде.

Вариант # iptables -t raw -A PREROUTING -j TRIPSO --to-astra счастья тоже не принес. Игры с -A и -I тоже.

TL;DR match-модуль для iptables модифицирует исходящие пакеты, но не входящие. Как модифицировать входящие пакеты? Ну или что я не так делаю? nf queue не предлагать.

 ,

leet27
()

Docker swarm, overlay network и gpu

Привет. Есть swarm из двух нод - менеджерной и воркера. Создал overlay network по имени myinternal. Настроил докер для работы с GPU, тестовый образ nvidia/cuda:10.0-base отрабатывает штатно, контейнер видит gpu. Хочу развернуть контейнер с gpu и присоединить его к своей network:

docker service create --with-registry-auth --generic-resource "gpu=1" --name=test --constraint=node.id==50pbc33tbompfiiu1n61khyc5 --network=myinternal busybox:latest sh -c "while true; do echo Hello; sleep 2; done"

Не получается, докер говорит сначала node is missing network attachments, ip addresses may be exhausted, затем assigned node no longer meets constraints, примерно так:

ID                          NAME                IMAGE                                                                                    NODE                DESIRED STATE       CURRENT STATE             ERROR                                                                  PORTS
yonzgcjx8793nxf2jbuvpdukq    \_ test.1     busybox:latest@sha256:d366a4665ab44f0648d7a00ae3fae139d55e32f9712c67accd604bb55df9d05a   node-4             Shutdown            Rejected 19 seconds ago   "assigned node no longer meets constraints"
3a3wrspme0m5ureu69dd9wpju    \_ test.1     busybox:latest@sha256:d366a4665ab44f0648d7a00ae3fae139d55e32f9712c67accd604bb55df9d05a   node-4             Shutdown            Rejected 19 seconds ago   "node is missing network attachments, ip addresses may be exhausted"

При этом если убрать или --network или --generic-resource, то все прекрасно работает (без сети или без гпу, соответственно).

Подробности сети:

docker network inspect e0fs28o8t7pq
[
    {
        "Name": "myinternal",
        "Id": "e0fs28o8t7pqgc5p2jusa662g",
        "Created": "2020-10-08T06:46:38.851827933Z",
        "Scope": "swarm",
        "Driver": "overlay",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "10.9.8.1/16",
                    "Gateway": "10.9.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": null,
        "Options": {
            "com.docker.network.driver.overlay.vxlanid_list": "4096"
        },
        "Labels": null
    }
]

Что я делаю не так? (про kube просьба не писать)

 , ,

leet27
()

arecord пишет 24bit, а gstreamer нет

Привет. Вот тут мы с аноном подключили к Onion Omega2+ через i2s (не путать с i2c) АЦП pcm1808 и я получил худо-бедно звук с подключенных к ЦАП микрофонов. ЦАП выдает 24bit отсчеты с частотой 32000 в два канала. Проблем две:

  • arecord пишет звук нормально первые n минут/секунд после первого вызова. Потом начинает писать белый шум.

  • при этом gstreamer пишет всегда нормально, но только S16LE (не BE), на запрос S24BE/S16BE возвращает streaming stopped, reason not-negotiated (-4), на запрос S24LE пишет шум.

Вопрос только один - как заставить gstreamer писать сырые данные в S24BE/S24LE? Почему не работает arecord меня волнует мало, сообщил для полноты картины.

Запись через arecord:

root@Omega-E194:~# arecord -d 10 -D plughw:0,0 -c 2 -r 32000 -f S24_BE -t raw /mnt/mmcblk0p1/alsa.raw --disable-channels --disable-resample -vvvv
Recording raw data '/mnt/mmcblk0p1/alsa.raw' : Signed 24 bit Big Endian, Rate 32000 Hz, Stereo
Plug PCM: Hardware PCM card 0 'Audio-I2S' device 0 subdevice 0
Its setup is:
  stream       : CAPTURE
  access       : RW_INTERLEAVED
  format       : S24_BE
  subformat    : STD
  channels     : 2
  rate         : 32000
  exact rate   : 32000 (32000/1)
  msbits       : 32
  buffer_size  : 16384
  period_size  : 1024
  period_time  : 32000
  tstamp_mode  : NONE
  tstamp_type  : MONOTONIC
  period_step  : 1
  avail_min    : 1024
  period_event : 0
  start_threshold  : 1
  stop_threshold   : 16384
  silence_threshold: 0
  silence_size : 0
  boundary     : 1073741824
  appl_ptr     : 0
  hw_ptr       : 0

Версии софта

root@Omega-E194:~# arecord --version
arecord: version 1.1.6 by Jaroslav Kysela <perex@perex.cz>
root@Omega-E194:~# gst-launch-1.0 --version
gst-launch-1.0 version 1.12.4

hw caps с альсы

root@Omega-E194:~# arecord -D plughw:0,0 --dump-hw-params
Recording WAVE 'stdin' : Unsigned 8 bit, Rate 8000 Hz, Mono
HW Params of device "plughw:0,0":
--------------------
ACCESS:  MMAP_INTERLEAVED MMAP_NONINTERLEAVED MMAP_COMPLEX RW_INTERLEAVED RW_NONINTERLEAVED
FORMAT:  S8 U8 S16_LE S16_BE U16_LE U16_BE S24_LE S24_BE U24_LE U24_BE S32_LE S32_BE U32_LE U32_BE FLOAT_LE FLOAT_BE FLOAT64_LE FLOAT64_BE MU_LAW A_LAW IMA_ADPCM S24_3LE S24_3BE U24_3LE U24_3BE S20_3LE S20_3BE U20_3LE U20_3BE S18_3LE S18_3BE U18_3LE U18_3BE
SUBFORMAT:  STD
SAMPLE_BITS: [4 64]
FRAME_BITS: [4 640000]
CHANNELS: [1 10000]
RATE: [4000 4294967295)
PERIOD_TIME: (2666 256000]
PERIOD_SIZE: (10 1099511628)
PERIOD_BYTES: (5 4294967295)
PERIODS: (0 429496730)
BUFFER_TIME: [1 4294967295]
BUFFER_SIZE: [21 4294967294]
BUFFER_BYTES: [11 4294967295]
TICK_TIME: ALL

 ,

leet27
()

i2s в Onion Omega 2+

Привет, лор. Помоги в который уже раз.

Есть Onion Omega 2+, у которой заявлен интерфейс i2s. На этот i2s заведен АЦП TI PCM1808 (это не кодек и вообще неразумная железка, управления в общем случае не требует). Вопрос знатокам - как завести вывод с i2s в юзермод? Хочется, конечно, чтобы это была просто виртуальная саундкарта, видимая в alsa.

Железка работает под LEDE/OpenWRT с оверлеями от производителя, я собираю все из стабильной ветки.

Вопрос не новый, много где рассматривался. В интернетах есть мнение, что достаточно добавить «что-то» в device tree и все волшебным образом заработает. Но у меня так и не хватило знаний/мозгов сделать это. Что я уже пробовал:

Во всех случаях arecord -l и aplay -l возвращают --- no soundcards ---, на модуль snd_soc_ralink_i2s всегда 0 ссылок в lsmod.

Не предоставляю подробной инфы (логи, dmesg и проч) потому что не уверен, что копаю в нужную сторону, но предоставлю если надо.

 ,

leet27
()

Получить h264 из Logitech c920

Моя цель: получить поток, кодированный в h264 из веб-камеры Logitech c920. Я примерно представляю, сколько раз разжевывался этот вопрос в интернетах, но ничего не получается. Что есть: Ubuntu 19.04 на ноуте Vaio SVS1513, собственно c920. Вывод v4l-ctl:

user@vaio:~$ v4l2-ctl --list-formats
ioctl: VIDIOC_ENUM_FMT
        Index       : 0
        Type        : Video Capture
        Pixel Format: 'YUYV'
        Name        : YUYV 4:2:2

        Index       : 1
        Type        : Video Capture
        Pixel Format: 'MJPG' (compressed)
        Name        : Motion-JPEG

user@vaio:~$ v4l2-ctl --all
Driver Info (not using libv4l2):
        Driver name   : uvcvideo
        Card type     : HD Pro Webcam C920
        Bus info      : usb-0000:00:14.0-3
        Driver version: 4.18.20
        Capabilities  : 0x84A00001
                Video Capture
                Metadata Capture
                Streaming
                Extended Pix Format
                Device Capabilities
        Device Caps   : 0x04200001
                Video Capture
                Streaming
                Extended Pix Format
Priority: 2
Video input : 0 (Camera 1: ok)
Format Video Capture:
        Width/Height      : 800/600
        Pixel Format      : 'YUYV'
        Field             : None
        Bytes per Line    : 1600
        Size Image        : 960000
        Colorspace        : sRGB
        Transfer Function : Default (maps to sRGB)
        YCbCr/HSV Encoding: Default (maps to ITU-R 601)
        Quantization      : Default (maps to Limited Range)
        Flags             :
Crop Capability Video Capture:
        Bounds      : Left 0, Top 0, Width 800, Height 600
        Default     : Left 0, Top 0, Width 800, Height 600
        Pixel Aspect: 1/1
Selection: crop_default, Left 0, Top 0, Width 800, Height 600
Selection: crop_bounds, Left 0, Top 0, Width 800, Height 600
Streaming Parameters Video Capture:
        Capabilities     : timeperframe
        Frames per second: 24.000 (24/1)
        Read buffers     : 0
                     brightness 0x00980900 (int)    : min=0 max=255 step=1 default=128 value=128
                       contrast 0x00980901 (int)    : min=0 max=255 step=1 default=128 value=128
                     saturation 0x00980902 (int)    : min=0 max=255 step=1 default=128 value=128
 white_balance_temperature_auto 0x0098090c (bool)   : default=1 value=1
                           gain 0x00980913 (int)    : min=0 max=255 step=1 default=0 value=223
           power_line_frequency 0x00980918 (menu)   : min=0 max=2 default=2 value=2
      white_balance_temperature 0x0098091a (int)    : min=2000 max=6500 step=1 default=4000 value=3193 flags=inactive
                      sharpness 0x0098091b (int)    : min=0 max=255 step=1 default=128 value=128
         backlight_compensation 0x0098091c (int)    : min=0 max=1 step=1 default=0 value=0
                  exposure_auto 0x009a0901 (menu)   : min=0 max=3 default=3 value=3
              exposure_absolute 0x009a0902 (int)    : min=3 max=2047 step=1 default=250 value=415 flags=inactive
         exposure_auto_priority 0x009a0903 (bool)   : default=0 value=1
                   pan_absolute 0x009a0908 (int)    : min=-36000 max=36000 step=3600 default=0 value=0
                  tilt_absolute 0x009a0909 (int)    : min=-36000 max=36000 step=3600 default=0 value=0
                 focus_absolute 0x009a090a (int)    : min=0 max=250 step=5 default=0 value=30 flags=inactive
                     focus_auto 0x009a090c (bool)   : default=1 value=1
                  zoom_absolute 0x009a090d (int)    : min=100 max=500 step=1 default=100 value=100
user@vaio:~$ v4l2-ctl --list-devices
HD Pro Webcam C920 (usb-0000:00:14.0-3):
        /dev/video0
        /dev/video1

USB2.0 Camera: USB2.0 Camera (usb-0000:00:1a.0-1.3):
        /dev/video2
        /dev/video3

Дальше пытаюсь действовать по мануалу с хабра, но ни uvch264src, ни v4l2src, ни vlc не хотят работать с камерой в качестве источника h264.

cvlc:

user@vaio:~$ v4l2-ctl --device=/dev/video0 --set-fmt-video=width=800,height=600,pixelformat=1

user@vaio:~$ cvlc v4l2:///dev/video0:chroma=h264:width=800:height=600 --sout '#standard{access=http,mux=ts,dst=localhost:8080,name=stream,mime=video/ts}' -vvv
... skip ...

[00007fe8e0000c40] main input debug: `v4l2:///dev/video0:chroma=h264:width=800:height=600' successfully opened
[00007fe8e0000c40] main input debug: Buffering 0%
[00007fe8e0000c40] main input debug: switching to sync mode
[00007fe8dc0015e0] main stream output debug: adding a new sout input for `YUY2` (sout_input: 0x7fe8d4000b20)
[00007fe8dc005130] main mux debug: adding a new input
[00007fe8dc005130] mux_ts mux warning: rejecting stream with unsupported codec YUY2
[00007fe8dc005130] main mux error: cannot add this stream
[00007fe8dc0015e0] main stream output warning: new sout input failed (sout_input: 0x7fe8d4000b20)
[00007fe8dc4da2a0] main decoder error: cannot create packetizer output (YUY2)
... skip ...
Как я понял, это от несоответствия ожидаемого формата (h264) и получаемого фактически (raw YUY2).

uvch264src:

user@vaio:~$ gst-launch-1.0 -v -e uvch264src device=/dev/video0 name=src auto-start=true src.vfsrc ! queue ! video/x-raw,format=YUY2,width=320,height=240,framerate=10/1 ! xvimagesink sync=false src.vidsrc ! queue ! video/x-h264,width=1280,height=720,framerate=30/1 ! h264parse ! avdec_h264 ! xvimagesink sync=false
Установка конвейера в состояние PAUSED…
ОШИБКА: Конвейер не хочет становиться на паузу.
/GstV4l2Src:v4l2src0: num-buffers = -1
/GstV4l2Src:v4l2src0: device = /dev/video0
ОШИБКА: из элемента /GstPipeline:pipeline0/GstUvcH264Src:src: Device is not a valid UVC H264 camera
Дополнительная отладочная информация:
gstuvch264_src.c(2528): ensure_v4l2src (): /GstPipeline:pipeline0/GstUvcH264Src:src
Установка конвейера в состояние NULL…
Освобождение конвейера…

v4l2src:

user@vaio:~$ gst-launch-1.0 -v -e v4l2src device=/dev/video0 ! queue ! video/x-h264,width=1280,height=720,framerate=30/1 ! h264parse ! avdec_h264 ! xvimagesink sync=false
Установка конвейера в состояние PAUSED…
Конвейер работает и не требует состояния PREROLL…
Установка конвейера в состояние PLAYING…
New clock: GstSystemClock
ОШИБКА: из элемента /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data stream error.
Дополнительная отладочная информация:
gstbasesrc.c(3055): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
streaming stopped, reason not-negotiated (-4)
Включён EOS при закрытии — ожидание EOS после ошибки
Ожидание EOS…
^Chandling interrupt.
Прерывание: Остановка конвейера…
Прерывание во время ожидания EOS — остановка конвейера…
Execution ended after 0:00:03.536119652
Установка конвейера в состояние PAUSED…
Установка конвейера в состояние READY…
Установка конвейера в состояние NULL…
Освобождение конвейера…
В интернетах говорят, что reason not-negotiated (-4) это опять же несоответствие ожидаемого и получаемого форматов.

ffmpeg я тоже пробовал, он тоже выдает два вида форматов - raw и mjpeg, а поскольку я не понял, исправлен ли баг со сбросом формата на raw при подключении к девайсу, то я сильно в эту сторону не копал.

Куда бечь, господа? Если я ничего не понял, c920 может показывать формат/пин/пад/яхз h264, а может не показывать, при этом упаковывая данные h264 в поток mjpeg. Во втором случае должен работать uvch264src, он для этого создавался (наверно). В первом должно работать вообще все, но нет. Как заставить c920 выдавать h264? Вариант кодировать извне мне не подходит, т.к. в итоге хочу получать поток на onion S2+, а там аппаратного кодека (или я о нем не знаю).

 , ,

leet27
()

Нет клика/тапа в событиях от тачскрина

Привет. Есть sbc, Digi ConnectCore 6UL SBC Pro, к нему прицеплен по LVDS какой-то экран. К экрану прицеплен тачскрин с контроллером tsc2007, заведенный в sbc через i2c. На sbc установлен DIGI Embedded Yocto 2.6. В ядре добавлена поддержка тачскринов и поддержка tsc2007 (собран как часть ядра, не модуль). Тачскрин видится в системе и двигает курсор мыши при нажатии, но никогда не присылает события «нажатие/тап по экрану», только ABS_X, ABX_Y и ABS_PRESSURE, соответственно нажать ни на что нельзя, курсор просто ползает по экрану за пальцем. Тачскрин двигает курсор только при работе через evdev, через libinput не удалось заставить. xinput_calibrator так же не получает события о нажатии, поэтому калибровку пройти не могу. Положение пальца на эране в DE (matchbox) соответствует положению курсора, т.е. калибровка в принципе не нужна. ts_calibrator (или как там его) так же не видит нажатий, да еще и сильное различие между пальцем и откликом на экране (похоже, что в tslib, которую я никак не настраивал, границы тача указаны как 65535, а в evdev берутся с железа как 4095 или что-то в этом роде).

В device tree прописан примерно так:

&i2c1 {
        touchscreen: tsc2007@48 {
                     compatible = "ti,tsc2007";
                     reg = <0x48>;
                     interrupt-parent = <&gpio3>;
                     interrupts = <21 0>;
                     gpios = <&gpio3 21 GPIO_ACTIVE_LOW>;
                     ti,x-plate-ohms = <500>;
                     status = "okay";
                     linux,wakeup;
                     wakeup-source;
        };
Прерывания пробовал менять, толку мало. x-plate-ohms пробовал и 400, и 660, тоже разницы не увидел.

Конфиги:

root@ccimx6ulsbc:~# cat /usr/share/X11/xorg.conf.d/10-evdev.conf

Section "InputClass"
        Identifier "evdev pointer catchall"
        MatchIsPointer "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
EndSection

Section "InputClass"
        Identifier "evdev keyboard catchall"
        MatchIsKeyboard "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
EndSection

Section "InputClass"
        Identifier "evdev touchpad catchall"
        MatchIsTouchpad "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
EndSection

Section "InputClass"
        Identifier "evdev tablet catchall"
        MatchIsTablet "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
EndSection

Section "InputClass"
        Identifier "evdev touchscreen catchall"
        MatchIsTouchscreen "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
EndSection
root@ccimx6ulsbc:~# cat /etc/X11/xorg.conf
Section "Device"
    Identifier  "Kernel Framebuffer Device"
    Driver      "fbdev"
    Option      "fbdev" "/dev/fb0"
EndSection

Section "ServerFlags"
    Option "BlankTime"  "0"
    Option "StandbyTime"  "0"
    Option "SuspendTime"  "0"
    Option "OffTime"  "0"
EndSection

Тесты:

root@ccimx6ulsbc:~# evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:      mca-cc6ul-pwrkey
/dev/input/event1:      TSC2007 Touchscreen
Select the device event number [0-1]: 1
Input driver version is 1.0.1
Input device ID: bus 0x18 vendor 0x0 product 0x0 version 0x0
Input device name: "TSC2007 Touchscreen"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 330 (BTN_TOUCH)
  Event type 3 (EV_ABS)
    Event code 0 (ABS_X)
      Value      0
      Min        0
      Max     4095
    Event code 1 (ABS_Y)
      Value   4095
      Min        0
      Max     4095
    Event code 24 (ABS_PRESSURE)
      Value   4095
      Min        0
      Max     4095
Properties:
Testing ... (interrupt to exit)
Event: time 1565863240.820826, type 3 (EV_ABS), code 0 (ABS_X), value 866
Event: time 1565863240.820826, type 3 (EV_ABS), code 1 (ABS_Y), value 2031
Event: time 1565863240.820826, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 3523
Event: time 1565863240.820826, -------------- SYN_REPORT ------------
Event: time 1565863240.840968, type 3 (EV_ABS), code 0 (ABS_X), value 867
Event: time 1565863240.840968, type 3 (EV_ABS), code 1 (ABS_Y), value 2033
Event: time 1565863240.840968, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 3471
Event: time 1565863240.840968, -------------- SYN_REPORT ------------
...
...
root@ccimx6ulsbc:~# xinput test "TSC2007 Touchscreen"
motion a[0]=579 a[1]=2631 a[2]=3457
motion a[0]=590 a[1]=2640 a[2]=3444
motion a[0]=589 a[1]=2641 a[2]=3410
motion a[0]=579 a[1]=2637 a[2]=3277
motion a[0]=0 a[1]=4095 a[2]=4095
motion a[0]=542 a[1]=2512 a[2]=2420
motion a[0]=464 a[1]=2512 a[2]=3200
motion a[0]=463 a[1]=2512 a[2]=3290
motion a[1]=2513 a[2]=3328
motion a[1]=2511 a[2]=3348
...
...

Лог xorg:

root@ccimx6ulsbc:~# cat /var/log/Xorg.0.log
[   192.956]
X.Org X Server 1.20.1
X Protocol Version 11, Revision 0
...
[   193.305] (II) Using input driver 'evdev' for 'TSC2007 Touchscreen'
[   193.305] (**) TSC2007 Touchscreen: always reports core events
[   193.306] (**) evdev: TSC2007 Touchscreen: Device: "/dev/input/event1"
[   193.307] (--) evdev: TSC2007 Touchscreen: Vendor 0 Product 0
[   193.307] (--) evdev: TSC2007 Touchscreen: Found absolute axes
[   193.307] (--) evdev: TSC2007 Touchscreen: Found x and y absolute axes
[   193.307] (--) evdev: TSC2007 Touchscreen: Found absolute touchscreen
[   193.308] (II) evdev: TSC2007 Touchscreen: Configuring as touchscreen
[   193.308] (**) evdev: TSC2007 Touchscreen: YAxisMapping: buttons 4 and 5
[   193.308] (**) evdev: TSC2007 Touchscreen: EmulateWheelButton: 4, EmulateWheelInertia: 10, EmulateWheelTimeout: 200
[   193.308] (**) Option "config_info" "udev:/sys/devices/soc0/soc/2100000.aips-bus/21a0000.i2c/i2c-0/0-0048/input/input1/event1"
[   193.308] (II) XINPUT: Adding extended input device "TSC2007 Touchscreen" (type: TOUCHSCREEN, id 6)
[   193.309] (II) evdev: TSC2007 Touchscreen: initialized for absolute axes.
[   193.312] (**) TSC2007 Touchscreen: (accel) keeping acceleration scheme 1
[   193.312] (**) TSC2007 Touchscreen: (accel) acceleration profile 0
[   193.312] (**) TSC2007 Touchscreen: (accel) acceleration factor: 2.000
[   193.312] (**) TSC2007 Touchscreen: (accel) acceleration threshold: 4
[   193.316] (II) config/udev: Adding input device mca-cc6ul-pwrkey (/dev/input/event0)
[   193.317] (**) mca-cc6ul-pwrkey: Applying InputClass "evdev keyboard catchall"
[   193.317] (II) Using input driver 'evdev' for 'mca-cc6ul-pwrkey'
[   193.317] (**) mca-cc6ul-pwrkey: always reports core events
[   193.317] (**) evdev: mca-cc6ul-pwrkey: Device: "/dev/input/event0"
[   193.317] (--) evdev: mca-cc6ul-pwrkey: Vendor 0 Product 0
[   193.317] (--) evdev: mca-cc6ul-pwrkey: Found keys
[   193.318] (II) evdev: mca-cc6ul-pwrkey: Configuring as keyboard
[   193.318] (**) Option "config_info" "udev:/sys/devices/soc0/soc/2100000.aips-bus/21a0000.i2c/i2c-0/0-007e/mca-cc6ul-pwrkey/input/input0/event0"
[   193.318] (II) XINPUT: Adding extended input device "mca-cc6ul-pwrkey" (type: KEYBOARD, id 7)
[   193.318] (**) Option "xkb_rules" "evdev"

 , , ,

leet27
()

PAN на OpenWRT через Bluetooth

Приветствую.

Не получается поднять ip over bluetooth под openwrt. Железо - бытовой роутер (tp-link какой-то там, думаю, неважно), усб-донгл Mobiledata UBT-210. Софт - Openwrt 15.05, bluez (bluez-libs, bluez-utils). BT-устройство в системе видится:

root@OpenWrt:~# hcitool dev
Devices:
        hci0    00:1A:7D:DA:71:0B
Оно даже видит соседние девайсы:
root@OpenWrt:~# hcitool scan
Scanning ...
        14:3E:BF:D9:F0:F5       nubia Z9 max
Т.е. вроде бы работоспособно. Нужно поднять сетевое соединение поверх БТ, но как это сделать - не могу нагуглить. Подключение по hcitools cc не отвечает вообще ничего:
root@OpenWrt:~# hcitool cc 14:3E:BF:D9:F0:F5
root@OpenWrt:~#
Подключение с помощью rfcomm фейлится:
root@OpenWrt:~# rfcomm connect hci0 14:3E:BF:D9:F0:F5
Can't connect RFCOMM socket: Connection refused
(впрочем, rfcomm как-то готовить надо, не уверен, что я это делаю и делаю правильно)

При попытке опросить сервисы с другого устройства (комп на офтопике) приходит отлуп.

Проблема в том, что на «большом» линуксе есть пакет bluez-tools, в котором куча хелперов, а в openwrt только hci*-утилиты. Плюс основная масса вопросов по bluez датируется 2008-2011 годом и большинство информации уже устарело. Подскажите, куда копать?

И если кто-то этот путь уже проходил, скажите, как в итоге соединение - скорость, стабильность итд? Фильмы смотреть не собираюсь, просто сервис опрашивать надо постоянно.

 , ,

leet27
()

RSS подписка на новые темы