вторник, 17 октября 2017 г.

SDR приемник на базе RTL2838U

Приобрел DVB-T приемник на базе чипа RTL2838U, который собираюсь использовать как SDR приемник.





Чтобы ядро Linux не пыталось использовать его как dvb устройство, нужно запретить загрузку модуля dvb_usb_rtl28xxu

$ echo 'blacklist dvb_usb_rtl28xxu' | sudo tee /etc/modprobe.d/rtl2838u-sdr.conf
$ sudo modprobe -r dvb_usb_rtl28xxu
$ sudo udevadm control --reload-rules

После этого нужно подключить приемник или переподключить его.

В системе устройство опозналось так:

$ lsusb -d 0bda:2838 -v

Bus 001 Device 030: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x0bda Realtek Semiconductor Corp.
  idProduct          0x2838 RTL2838 DVB-T
  bcdDevice            1.00
  iManufacturer           1 Realtek
  iProduct                2 RTL2838UHIDIR
  iSerial                 3 00000001
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           34
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          4 USB2.0-Bulk&Iso
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              500mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol    255 Vendor Specific Protocol
      iInterface              5 Bulk-In, Interface
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol    255 Vendor Specific Protocol
      iInterface              5 Bulk-In, Interface
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  bNumConfigurations      2
Device Status:     0x0000
  (Bus Powered)

На первое время установил GNU Radio и Gqrx

sudo apt-get update
sudo apt-get install -t jessie-backports rtl-sdr gqrx-sdr gnuradio gr-osmosdr

Так выглядит FM станция при приеме на самодельную антенну четвертьволновой диполь из двух телескопических колен (каждое 19 см - 110 см) и одежной вешалки.



Регулируя длину колен такую антенну можно настраивать на оптимальный прием нужной частоты. Для приема FM частот нужно выдвинуть оба плеча антенны на 80 см - это будет соответствовать середине частоты FM диапазона.

В моем варианте длина телескопических колен регулируется от 19 см до 110 см, что соответствует частотам от 394MHz до 68MHz соответственно (чем больше выдвинуты колена, тем ниже частота оптимального приема).

воскресенье, 15 октября 2017 г.

Не везет с покупкой ESP8266 ESP-12S

С весны пытаюсь заказать два модуля ESP8266 в варианте ESP-12S.


ESP-12S - последний вариант эволюции модулей ESP-12E и ESP-12F. От двух последних отличается отсутствием падов для SPI flash на торце и наличием 4MB flash памяти (по непроверенным слухам).

В мае заказал два модуля на eBay у продавца kingelectronics15. Высокий рейтинг продавца и много продаж внушали доверие. В августе начал пинать продавца на предмет "а где моя посылка" - в итоге возврат средств без каких либо дополнительных вопросов.

Ну бывает, подумал я, и заказал эти модули у продавца caelectronics8. Аналогично высокий рейтинг и много продаж. На этой неделе я обратился к продавцу с тем же вопросом - где моя посылка? В итоге возрат средств.

Появилась мысль, что на почте завелся электронщик, которому приглянулись мои модули. Но эта мысль развеялась, когда я заглянул в транзакции Paypal - оба продавца имеют одинаковый email! В принципе если бы я был более внимателен к мелочам, то в самом начале можно было заметить одинаковый текст в оповещении о заказе. Как там говорят - в одну воронку снаряд дважды не попадает?

В этот раз испытываю удачу на Aliexpress. Теперь заказал пересылку с треком. Надеюсь я не настолько "везуч", чтобы в третий раз наткнуться на этого продавца.

воскресенье, 8 октября 2017 г.

Dell Latitude e6430 включается со второго раза

На прошлой неделе заметил, что ноутбук жены (Dell Latitude e6430) включается со второго раза. После нажатия кнопки питания на порт-репликаторе на мониторе появляется логотип Dell, висит секунд 15, а затем ноутбук отключается. Если включить еще раз, то логотип пропадает быстро и начинается загрузка системы.

Попробовал узнать когда это появилось - говорит, что давно и поскольку ноутбук в итоге включается и работает без проблем, то проблемы как бы и нет. Но я так не играю - полез в BIOS чтобы глянуть какие события записывает в момент отключения питания.


Собственно наибольший интерес представляет событие "Power Off - ASF2 force off". Поиск в интернете привел на форумы Dell, где пишут что это очень общая ошибка, которая может значить любые проблемы. Но один из советов - проверить защелкнуты ли замки аккумулятора.

Достал ноутбук из дока и оказалось, что один из замков батареи открыт. Достал и снова установил батарею чтобы оба замка штатно закрылись.

За несколько дней проблема больше не повторилась - посмотрю как будет дальше.

четверг, 13 июля 2017 г.

Обновление Xiaomi Mi4c до LineageOS 14.1

Решил поделиться впечатлениями от обновления своего Xiaomi Mi4c с CyanogenMod 13.1 до LineageOS 14.1. Основная причина обновления - попытка решить проблему с внезапным отключением телефона при заряде батареи 20-30%.

Для обновления использовал вариант прошивки LineageOS от Team Superluminal, firmware от miui 8.2.3.0 и заодно обновил TWRP до 3.1.1 (пришлось откатить TWRP на 3.0.2-0, т.к. первый же OTA update привел к boot loop) . Уже прошло две недели с момента обновления и можно подвести итог:
  • Решилась главная проблема с отключением телефона при заряде батареи ниже 30%. Как и положено на 15% я получаю всплывающее уведомление, которое повторяется на 5% и потом телефон разряжается до нуля и выключается.
  • Работает активация/деактивация второй симки. В CyanogenMod 13.1 не было возможности деактивировать вторую симку и она постоянно оставалась активной. В качестве второй симки у меня установлена туристическая симка от GoodLine и не хочется "случайно" звонить через нее.
Теперь касательно плюшек новой версии Android
  • Я получил последнюю стабильную версию Android 7.1.2 (security patch level: June 5, 2017).
  • Теперь при звонке телефон автоматически включает режим "Do not disturb" и новые смски или уведомления от aNag более не жужжат в ухо во время разговора.
P.S. Заметил что если включить русский язык в настройках интерфейса, то Mi Fit не показывает контакт при входящем звонке или SMS. В этом случае в Mi Fit просто нет нужного пункта. Все приходит в норму, если выбрать английский язык.

Второй момент - если смотреть ролики на Youtube и выбран английский язык в настройках интерфейса, то почти нет рекламы. Ее становится сильно больше, если сменить язык интерфейса на русский.

вторник, 11 июля 2017 г.

Прошляпил обновление signing key для моего репозитария

В пятницу пришло письмо от человека, который указал на истекший срок действия ключа, которым подписывается мой репозитарий.

В APT ошибка выглядит так:

Сущ:10 http://www.tataranovich.com/debian jessie Release
Ошк:13 http://www.tataranovich.com/debian jessie Release.gpg
  Следующие подписи неверные: EXPKEYSIG 836CC41976FB442E Tataranovich.com APT Repository 
Чтение списков пакетов… Готово
W: Произошла ошибка при проверке подписи. Репозиторий не обновлён и будут использованы предыдущие индексные файлы. Ошибка GPG: http://www.tataranovich.com/debian jessie Release: Следующие подписи неверные: EXPKEYSIG 836CC41976FB442E Tataranovich.com APT Repository 
W: Не удалось получить http://www.tataranovich.com/debian/dists/jessie/Release.gpg  Следующие подписи неверные: EXPKEYSIG 836CC41976FB442E Tataranovich.com APT Repository 

Я уже обновил ключ, но для исправления требуется несколько ручных действий:

sudo apt-key adv --keyserver pool.sks-keyservers.net --recv-keys 0x836CC41976FB442E
sudo apt-get update

Кроме этого можно установить пакет tataranovich-keyring отсюда. В этом случае больше шансов, что ситуация не повторится.

В процессе обновления пакета заметил, что теперь ключ нужно класть в /etc/apt/trusted.gpg.d, а не добавлять через apt-key в postinst.

среда, 28 июня 2017 г.

Перестал подключаться PPTP через NAT

Имеется домашний сервер, который маршрутизатор домашней сети и еще много чего, работающий на Debian Jessie. После обновления ядра со штатного 3.16.43-2+deb8u1 до 4.9.30-2~bpo8+1 из backports перестало работать подключение к корпоративной сети через PPTP. Если перезагрузить сервер на старое ядро, то PPTP работает.

Нужные модули загружены:

$ grep pptp /etc/modules
nf_nat_pptp
nf_conntrack_pptp

$ lsmod | awk '/pptp/ {print $1}'
nf_nat_pptp
nf_nat_proto_gre
nf_conntrack_pptp
nf_conntrack_proto_gre
nf_nat
nf_conntrack

Помучился немного и спросил в рассылке debian-russian. Добрые люди подсказали два способа решить проблему:

Добавить дополнительное правило в netfilter:

$ sudo iptables -t raw -A PREROUTING -p tcp -m tcp --dport 1723 -j CT --helper pptp

или включить conntrack helper:

$ sudo sysctl -w net.netfilter.nf_conntrack_helper=1

Больше информации по теме можно почерпнуть тут.

пятница, 16 июня 2017 г.

Xiaomi Mi4c внезапно отключается при заряде батареи 20-30%

Не могу вспомнить когда это случилось первый раз, но похоже мой Xiaomi Mi4c взял привычку отключаться при остаточном заряде 20-30%. В произвольный момент, когда батарея показывает ниже 40% телефон вдруг решает что заряд около нуля и штатно выключается.


На графике батареи видно что с примерно 25% батарея мгновенно "разрядилась" до нуля, а после повторного включения телефона отработала еще несколько часов. Причем повторилась старая проблема с продолжающимся разрядом батареи при подключенном зарядном. Калибровка батареи не помогла - я пробовал полностью разрядить батарею, потом зарядить до 100%, калибровать, разрядить до нуля и снова зарядить до 100%.

В интернете встречаются упоминания, что такое поведение не редкость даже у новых телефонов: произвольное отключение телефона происходит при заряде батареи 20-60%. Похоже это связано с проблемами в прошивке (сейчас у меня установлен CyanogenMod 13.1 от Team Superluminal), т.к. у меня эту проблема появилась относительно недавно и скорее всего связана с последним обновлением прошивки в начале этого года.

Зайдя на форум team superluminal узнал, что теперь они предлагают LineageOS 14.1 для Mi4c - нужно будет попробовать эту прошивку при случае.

Обновлено 5/09/2017: Проблема с внезапным отключением решилась обновлением прошивки до LineageOS 14.1.