Решение проблемы Asterisk — нет звука при звонке через NAT

Заметил недавно что нет звука при звонке с IP-телефона на другой IP-телефон которые оба находились за одним и тем же NAT (роутером).

По этому в конфигурации sip.conf для этих аккаунтов нужно указать что они за NAT, указав параметр:

nat=force_rport,comedia

Хочу заметить что значение yes для nat уже устарело начиная с версии Asterisk 11, по этому правильно будет как указанно выше.

И указать также на no для параметра directmedia, чтобы Asterisk не отправлял пакеты на тот же порт из которого их получил (что в моём случае и произошло, оба телефона подключались к Asterisk с одного IP, с одинаковыми портами):

directmedia=no

Все.

Ремонт iPhone 5s — не работает задняя камера

Однажды уронил новый iPhone 5s с высоты колена на плитку, телефон был в защитном бампере, как только его поднял, то заметил что не активна кнопка фонарика. Перезагрузил его, кнопка стала активной и фонарик работал, в этот момент даже снял видео, но на следующий день при включении камеры отображался черный экран.
С некоторого раза удавалось переключится на переднюю камеру, но задняя так и не работала.
Иногда можно было увидеть предупреждение «Вспышка выключена. Перед использование вспышки iPhone требуется охлаждение.«, но телефон не использовался перед этим и естественно не мог перегреться.
Иногда также через пару перезагрузок задняя камера могла начать работать и потом снова был черный экран.

Чтобы решить эту проблему, мне пришлось разобрать iPhone 5s и отсоединить шлейф камеры и подключить его обратно, на это ушло около пяти минут. Все, камера после этого работала отлично!
Хочу заметить что эта проблема встречается у многих и некоторые пытаются сбрасывать настройки, восстанавливать прошивку и т.д., но это вряд ли поможет, так как вы скорее роняли, стукнули или возможно просто даже сильно встряхнули iPhone 5s. В моём случае защитная пластина внутри державшая шлейфы не помогла, хотя шлейф был подключен до конца, но проблема все же была в нем.
Если кто собрался ремонтировать сам, то обязательно почитайте указанную ниже статью иначе можно повредить телефон, ну а кто ни разу не разбирал iPhone 5s — то только нести в сервисный центр.
Ремонт iPhone 5s — синий экран

Ремонт iPhone 5s — синий экран

Однажды менял аккумулятор в iPhone 5s и заодно решил убрать пыль на камере, для этого пришлось открутить защитную пластину, отключить шлейфы дисплея и камеры.
И по не осторожности, перепутал четыре болта которые держали пластину, а они разного размера!
Ниже фото, первый болт не магнитится, остальные магнитятся.

Особое внимание нужно уделять четвертому болту так как он самый короткий и под ним идут контактные дорожки на плате.
То есть, если вместо него закрутить другой болт, то он порежет дорожки, в моем случае были повреждены три.
При включении iPhone 5s появляется яблоко как обычно, через некоторое время появляется синий экран и телефон перезагружается, в таком циклическом порядке бесконечно, он не может загрузится.
В некоторых сервис центрах эту защитную пластину вообще не прикручивают обратно, но тут у каждого свое мнение, хотя на практике она часто не спасала от ударов и был плохой контакт на шлейфах.
Чтобы выключить iPhone в таком состоянии и не отсоединять аккумулятор, нужно подключить его к iTunes кабелем, зажать одновременно кнопку питания и кнопку домой, он перезагрузится и на экране отобразится меню восстановления iTunes, потом можно просто отключить кабель и iPhone 5s будет выключен.
Чтобы решить эту проблему нужно восстановить (спаять) поврежденные дорожки под микроскопом, работа довольно тонкая, может занять около часа или больше и не каждый это сделает, тем кто этого еще не делал лучше не доверять, а кто умеет — возьмет за роботу около 30-80$.
Пример паяных дорожек под болтом на фото ниже

Установка эхоподавителя Oslec и DAHDI

Устанавливал как-то китайскую плату TDM410P для подключения аналоговых телефонных линий и связку Asterisk + Dahdi.
Так как плата не имеет аппаратного шумоподавления, пришлось ставить Oslec.
При звонках, со стороны аналогового телефона эха не было, а вот кто говорил в IP телефон — слышал сам себя.

Настраивал на Ubuntu Server, по этому переключимся сразу на пользователя root:

sudo -i

Следующими командами посмотрим установлен ли oslec и прочую информацию о dahdi и плате:

lsmod |grep oslec
lsmod |grep dahdi
updatedb
locate oslec | more
dahdi_cfg -vvvv

В моём случае первая команда ничего не показала, а последняя выдала в конце ошибку.
Это значит что Oslec не установлен, по этому будем собирать Dahdi вместе с Oslec.
Скачаем архив с исходниками ядра и распакуем их (командой ls посмотрим имя архива linux-source-*, в моём случае был линк на архив linux-source-3.13.0.tar.bz2):

cd /usr/src
aptitude install linux-source
tar xjf linux-source-3.13.0.tar.bz2

Скачаем исходники Dahdi и распакуем их в директорию /usr/src/dahdi/ (командой ls посмотри имя директории с распакованными файлами и последней командой переименуем её):

wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
tar xvfz dahdi-linux-complete-current.tar.gz
rm -f dahdi-linux-complete-current.tar.gz
mv dahdi-linux-complete-2.11.1+2.11.1 dahdi

Создадим директорию для Oslec и скопируем нужные файлы из архива с исходниками ядра в директорию с исходниками Dahdi:

mkdir /usr/src/dahdi/linux/drivers/staging
cp -fR /usr/src/linux-source-3.13.0/drivers/staging/echo /usr/src/dahdi/linux/drivers/staging

Укажем в Kbuild что нужно собирать Dahdi вместе с Oslec:

sed -i "s|#obj-m += dahdi_echocan_oslec.o|obj-m += dahdi_echocan_oslec.o|" /usr/src/dahdi/linux/drivers/dahdi/Kbuild
sed -i "s|#obj-m += ../staging/echo/|obj-m += ../staging/echo/|" /usr/src/dahdi/linux/drivers/dahdi/Kbuild
echo 'obj-m += echo.o' > /usr/src/dahdi/linux/drivers/staging/echo/Kbuild

Приступим к компиляции и установке:

cd /usr/src/dahdi/linux
make
make install

На этом Dahdi с эхоподавителем Oslec установлены и готовы к работе.

Чтобы задействовать Oslec укажем его в файле /etc/dahdi/system.conf:

fxsks=1
echocanceller=oslec,1
fxoks=2
echocanceller=oslec,2
fxoks=3
echocanceller=oslec,3
fxoks=4
echocanceller=oslec,4

А также активируем в /etc/asterisk/chan_dahdi.conf:

echocancel=yes
echocancelwhenbriged=no
echotraining=no

Перезапустим Dadhi и Asterisk чтобы применить изменения в файлах конфигурации:

astersik -rvv
dahdi restart
quit
service asterisk restart

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

Обновление прошивки FoxGate S6224-S4 R5

На тесте прошью коммутатор FoxGate S6224-S4(R5) с прошивкой 7.0.3.1(R0058.0010).
Заметил что на этой прошивке на нем часто отваливался Vlan интерфейс управления, при этом коммутатор функции свои выполнял, но был недоступен.

Посмотреть версию прошивки можно указанной ниже командой либо в web-интерфейсе на главной странице:

show version

Новые прошивки можно найти на сайте support.deps.ua.
Я прошивал этой — https://cloud.mail.ru/public/Jhhq/V6bVujesX

Файл прошивки с расширением .img распакуем из архива и закачаем на tftp сервер.

Теперь на коммутаторе выполним команду копирования прошивки с tftp сервера:

copy tftp://192.168.1.5/FoxGate-S6224-S4(R5)_7.0.3.5(R0217.0104)_10.3.108.img nos.img

По завершению копирования перезагрузим его командой:

reload

Все. Коммутатор должен загрузится с новой прошивкой.
Настройки коммутатора после обновления прошивки не были изменены.

Можно также прошить через Web-интерфейс в меню Switch basic configurationFirmware updateTFTP client service, где тоже нужно указать адрес tftp сервера и имена файлов.

Смотрите также:
Запуск TFTP сервера на Windows
Установка и настройка TFTP сервера в Ubuntu

Добавление ONT с trunk портом на Huawei SmartAX MA5683T

Приведу пример добавления ONT так чтобы на выходе ethernet порта все VLAN были с тегом.
Допустим OLT настроем по моей статье — Настройка Huawei SmartAX MA5683T через консоль.
ONT для теста возьму TP-Link GP110 с настроенным режимом transparent и выключенным DHCP, ну по сути с другими однопортовыми ethernet ONT настройка аналогична.

Подключимся по telnet или консоли к Huawei SmartAX MA5683T и перейдем в конфигурационный режим:

enable
config

Естественно все VLAN должны приходить на OLT тегом и прописаны на нем, а также на порту на который приходят:

vlan 207 smart
vlan 226 smart
vlan 300 smart
vlan 302 smart
port vlan 207 0/8 0
port vlan 226 0/8 0
port vlan 300 0/8 0
port vlan 302 0/8 0

Допустим на OLT указан адрес DHCP сервера с биллинга:

dhcp-server 0 ip 192.168.1.1

Его также нужно указать для каждого пользовательского VLAN интерфейса, иначе не будут получать IP-адреса (в 207 я не прописывал, так как использую его для управления, в нем все IP статические):

interface vlanif226
dhcp-server 0
quit

interface vlanif300
dhcp-server 0
quit

interface vlanif302
dhcp-server 0
quit

Допустим создан dba-profile для ограничения исходящей скорости:

dba-profile add profile-id 11 profile-name "dba-profile_11" type4 max 1024000

Создадим теперь ont-srvprofile:

ont-srvprofile gpon profile-name TAG
ont-port eth 1
transparent enable
multicast-forward untag
multicast mode olt-control
port vlan eth 1 transparent
commit
quit

Создадим ont-lineprofile (я указал нужные VLAN):

ont-lineprofile gpon profile-name KHP
tcont 4 dba-profile-id 11
gem add 1 eth tcont 4
gem add 2 eth tcont 4
gem add 3 eth tcont 4
gem add 4 eth tcont 4
gem mapping 1 1 vlan 207
gem mapping 2 2 vlan 226
gem mapping 3 3 vlan 300
gem mapping 4 4 vlan 302
commit
quit

Посмотрим новые не прописанные ONT появившиеся в сети (на каком порту и какой серийный номер):

display ont autofind all

Перейдем в режим конфигурации GPON платы:

interface gpon 0/4

Теперь добавим ONT:

ont add 4 0 sn-auth "54504C47D8970FE8" omci ont-lineprofile-name KHP ont-srvprofile-name TAG desc KHP
quit

Добавим service-port для каждого VLAN:

service-port 450 vlan 207 gpon 0/4/4 ont 0 gemport 1 multi-service user-vlan 207
service-port 451 vlan 226 gpon 0/4/4 ont 0 gemport 2 multi-service user-vlan 226
service-port 452 vlan 300 gpon 0/4/4 ont 0 gemport 3 multi-service user-vlan 300
service-port 453 vlan 302 gpon 0/4/4 ont 0 gemport 4 multi-service user-vlan 302

Все.

Решение ошибки Asterisk «Context ‘local’ tries to include nonexistent context ‘parkedcalls'»

Прикручивал как-то DAHDI плату и заметил следующую ошибку при входящем вызове с аналоговой линии:

WARNING[7238]: pbx.c:12314 ast_context_verify_includes: Context ‘local’ tries to include nonexistent context ‘parkedcalls’

Ошибка возникала из-за того что не загружен модуль res_parking, чтобы его загрузить, откроем консоль asterisk и выполним команду:

sudo asterisk -vvr
module load res_parking

Чтобы он автоматически загружался при запуске Asterisk, в файле /etc/asterisk/modules.conf, в блоке [modules] добавим строку:

load => res_parking.so