154

Panasonic KX-TDA600 и Asterisk. О их дружбе и недружбе⁠⁠

Итак, как и обещал, завершаю историю про подключение ведомственной АТС Panasonic KX-TDA600 и Asterisk.Начало тут: Краткие заметки по дружбе OpenVox D110P (Digium Wildcard TE110P) и Астериск в 2022 году

По немногочисленным руководствам из интернетов начал ковырять АТС Panasonic. В деле настройки АТС я полный ноль, поэтому на быстрый результат не рассчитывал. Нашу АТС лет 10 назад кто то настроил (по слухам - приглашённый специалист), и с тех пор она работала, работала и работала. Надёжная штука.

Скопировал себе содержимое SD карточки что бы откатиться к исходным настройкам если вдруг чо.

Поставил переключатели на плате PRI30 в нужные позиции и вставил плату в АТС.

Для RJ45 ставим переключатель на лицевой планке в положение 120 Ом. (Кстати, разъём для ISDN PRI не RJ45 на самом деле, а RJ47, господа связисты быстро начинают глумиться на форумах, если вдруг RJ47 для E1 назвал привычным RJ45. RJ45 кстати вполне подходит, и все в основном его и используют, но сам факт показать свою значимость и осведомлённость - бесценен. Я на связных форумах называл его осторожно - 8p8c :)))).

Переключатель на плате указывает, какой кабель используем - прямой или кросс. А - прямой, B - кросс. Для E1 используются 1,2 - первая пара, 4,5 - вторая.

Т.е. прямой кабель - 1 - бело-оранжевый, 2 - оранжевый, 4 - бело-зелёный, 5 - зелёный. Второй конец так же.

Кросс - 1 - бело-оранжевый, 2 - оранжевый, 4 - бело-зелёный, 5 - зелёный. С другой стороны - 1 - бело-зелёный, 2 - зелёный, 4 - бело-оранжевый, 5 - оранжевый.

Я использовал кросс.

Инструкция строго рекомендует на кабель вешать феррит. Хз, я не вешал.


Естесственно, при попытке захода на Панасоник пароль не подошел. Гуглим.

Натыкаемся на ЭТОТ форум, где человек спрашивает про сброс пароля и ему господа связисты, а именно НачШтаба рекомендует обратится к нему и он-де сбросит пароль за деньги. При этом говорит что вы, сисадмины весьма самонадеянны и считаете, что вам всё по плечу. А связь - "это вам не это". Понятно... - подумал я и продолжил гуглёж.

И на второй странице выдачи гугла нашел вот это руководство. Программа отработала на 5+, и я попал на нашу АТС. Проинициализировал плату PRI30.

По мотивам Вот этого руководства я настроил взаимодействие с Астериском, и... ничего не заработало. Ожидаемо.

Проверил ещё раз. Не заработало.

Сбрасываем всю АТС. Я не видел проблем, ибо у нас она в минимальной конфигурации - набита платами ESLC16, ну и добавилась PRI30. Ничего сложного.

Выключаем АТС. Переводим тумблер на процессорном модуле в положение инициализации, включаем. Ждём когда зелёный индикатор заморгает на корпусе АТС, ждём для верности ещё секунд 10, и переводим переключатель в режим normal.

АТС инициализируется где то 2 минуты и встаёт в работу.

Но номерной план сбит. У нас были трёхзначные номера от 100 до 212 (7 плат внутренних абонентов по 16 номеров). По умолчанию же АТС выставляет четырёхзначные 1001-1112.

Идём в 2.6.1 maitenance console и во вкладке Внутренние линии меняем 10 на 1, итд. Сохраняем и внутренние звонки пошли.

Далее опять обращаемся к тому же руководству из интернетов. Приведу его здесь.

1.1. Коннектимся к АТС с помощью консоли администрирования (KX-TDA Maintenance Console)

открываем пункт 1.1 (Slot).


1.2. Видим установленную плату PRI30.


1.3. Если она в режиме "INS" ("In Service" ), то переводим ее в режим "OUS", кликнув по ней правой кнопкой мыши и выбрав соответствующий пункт ("Out-of-service"). (В режиме INS Panasonic не дает править настройки платы).


1.4. Снова кликаем по ней мышкой и выбираем пункт "Port Property" ("Свойства порта").


1.5. Там выставляем Port Type (тип порта) в "QSIG-Master" (если плата в Asterisk у нас в режиме Slave.

Принципиально, чтобы на разных концах были разные значения, однако эмпирически получилось, что если ставить плату на Asterisk в Master (pri_net), то Panasonic постоянно отваливается, так что Master должен быть Panasonic).


1.6. CRC4 Mode (Режим CRC4) в "Disable". (Или enable, в зависимости от того как мы его выставили в Asterisk, опять же эмпирика показывает, что panasonic как-то криво обрабатывает этот пункт, лучше ставить в disable).


На этом настройка платы закончена, включаем плату (ПКМ - INS) и все должно заработать на уровне физики. Переходим на уровень логики.


Объединяем линии платы PRI30 в отдельную транковую группу:

2.1. открываем пункт "10.1" (CO Line Settings).

В таблице слева видим номер слота и номер порта. Справа можем задавать номер транковой группы (TRG) от 1 до 64. Выбираем любой неиспользуемый номер и присваиваем его всем 30-ти линиям платы.

Я поставил всем 2.

2.2. Объявляем эту транковую группу локальной (в том смысле, что не "внешней") для данной АТС. Для этого идем в пункт "9.1" (TIE Table). Думаем что бы написать в графе "Leading Number". Это такие цифры, при наборе которых АТС будет "отдавать" звонок в транковую группу, то есть нам на астериск. Тогда в Leading Number я пишу "3XX" и "4XX". В графе "Trunk Group" ("Группа внешних линий") указываем тот номер, который мы задали на предыдущем шаге, в пункте 10.1 консоли. При этом запоминаем номер строки таблицы, в который мы все это вписали (!). Это важно!

2.4 Идём в пункт "2.6.1Numbering Plan, Main", (План нумерации, Основное) на вкладку "Other PBX Extension" (Внутренняя линия другой УАТС), пишем первую цифру нумерации Asterisk (у меня - 3 и 4 соответственно). ВАЖНО, чтобы строка была та же, что и в пункте 9.1.

Добавляем настройки порта платы PRI30 для работы АОН на астериске.

И генерируем CLIP

Для меня - всё. У меня нет городских линий на АТС. Весь город я заведу на Asterisk. Мне с ним проще. Во-первых, море информации. Во вторых - дружелюбное сообщество.


Настраиваем Астериск. Начинаем с DAHDI.

/etc/dahdi/system.conf

loadzone=ru

defaultzone=ru

#span = 1,1,0,ccs,hdb3,crc4

span = 1,1,0,ccs,hdb3

# Параметры по порядку:

# 1 - Номер порта (спана) - 1 для 1-й карты

# 2 - Мастер(0) и слейв (1) - 1

# 3 - для стабилизации на длинных линиях. У нас линия короткая - 0

# 4 Fraiming

# 5 Coding

# 6 - необязательный - вкл CRC. Полезно опять же на длинных линиях. Наверное.

bchan = 1-15,17-31

dchan = 16

#alaw=1-15,17-31

Обратите внимание, тут комментарии экранируются решёткой #. В конфигах астериска  - точка с запятой (;).


/etc/asterisk/chan_dahdi.conf

[trunkgroups]


[channels]

language=ru

context=from-panas

switchtype=qsig  ;euroisdn

nationalprefix=8

overlapdial=yes

signalling=pri_cpe

rxwink=300

usecallerid=yes

cidsignalling=bell

;bell: bell202 as used in US (default)

;v23: v23 as used in the UK

;v23_jp: v23 as used in Japan

;dtmf: DTMF as used in Denmark, Sweden and Netherlands

;smdi: Use SMDI for caller ID. Requires SMDI to be enabled

;cidstart=ring ;Determine signals the start of caller ID. The options supported by Asterisk are:

;ring: A ring signals the start (default)

;polarity: Polarity reversal signals the start

;polarity_IN: Polarity reversal signals the start, DTMF dialtone detection in India

;dtmf: DTMF Caller ID spill begins only with DTMF, at various times before the ring.

;This causes Asterisk to constantly listen for DTMF CallerID signals on the specified channels

;If cidstart is configured to use dtmf, the energy level on the line may need to be

;tuned to properly identify the DTMF tones.

; This tuning is done with the dtmfcidlevel configuration option.

; The specified value is compared to the average over a packet of audio level

;of the absolute value of 16 bit signed linear samples.

; The default is set to 256, but this is completely arbitrary.

;It must be set high enough to prevent false detections, while low

;enough to ensure no dtmf spills are missed.

;hidecallerid=no

;callwaiting=yes

usecallingpres=yes

callwaitingcallerid=yes

transfer=yes

canpark=no

cancallforward=yes

callreturn=no

echocancel=no

echocancelwhenbridged=no

rxgain=0.0

txgain=0.0

group=1

callgroup=1

pickupgroup=1

immediate=no

busydetect=yes

busycount=8

channel => 1-15,17-31

/etc/asterisk/extensions.conf

[from-panas]  ; Звонки с панасоника

exten => _[34]XX,1,NoOp()

same => n, Dial(PJSIP/${EXTEN},30,tT)

same => n, Hangup()


[sip-local] ; Звонки с сипофонов и шлюзов там всяких

exten => _[34]XX, 1, NoOp()  ; Звонки с сипофонов на сипофоны

same => n, DIAL(PJSIP/${EXTEN},30,tT)

same => n, Hangup()


exten => _[12]XX, 1, NoOp()  ; Звонки с сипофонов на панасоник

same => n, Dial(Dahdi/g1/${EXTEN},,tT)

same => n, Hangup()

Ну и настраиваем авторизацию PjSIP. В этой версии астериска он основной. Можно конечно убрать, но на форумах убеждают, что несмотря на возросшую сложность конфигурирования - за ним будущее. Хз, чтож уж. Пробуем.

Настраиваем два сипофона - с номерами 301, 302 и паролями "5825".


/etc/asterisk/pjsip.conf

[udp-transport]

type = transport

protocol = udp

bind = 0.0.0.0

; ---------------------------------------300

[300]

type=endpoint

context=sip-local

disallow=all

allow=alaw

transport=udp-transport

auth=auth300

aors=300


[auth300]

type=auth

auth_type=userpass

password=5825

username=300


[300]

type=aor

max_contacts = 1


;---------------------------------------301

[301]

type=endpoint

context=sip-local

disallow=all

allow=alaw

transport=udp-transport

auth=auth301

aors=301


[auth301]

type=auth

auth_type=userpass

password=5825

username=301

[301]

type=aor

max_contacts = 1

И внезапно при запуске asterisk выясняем что кучи функций нет. Если ставим asterisk из репозиториев убунты, то том в конфигураторе модулей стоит разрешение загружать всё, за исключением пары модулей.

Здесь же, внезапно, наоборот.


Поэтому вот Вам мой файл /etc/asterisk/modules.conf Жаль, под кат нельзя убрать.

[modules]

autoload = no

; This is a minimal module load. We are loading only the modules

; required for the Asterisk features used in the "Super Awesome

; Company" configuration.

; Applications

load = app_bridgewait.so

load = app_dial.so

load = app_playback.so

load = app_stack.so

load = app_verbose.so

load = app_voicemail.so

load = app_directory.so

load = app_confbridge.so

load = app_queue.so

; Bridging

load = bridge_builtin_features.so

load = bridge_builtin_interval_features.so

load = bridge_holding.so

load = bridge_native_rtp.so

load = bridge_simple.so

load = bridge_softmix.so

; Call Detail Records

load = cdr_custom.so

; Channel Drivers

load = chan_bridge_media.so

load = chan_pjsip.so

load = chan_dahdi.so

;load = chan_sip.so

; Codecs

load = codec_gsm.so

load = codec_resample.so

load = codec_ulaw.so

load = codec_g722.so

; Formats

load = format_gsm.so

load = format_pcm.so

load = format_wav_gsm.so

load = format_wav.so

; Functions

load = func_callerid.so

load = func_cdr.so

load = func_pjsip_endpoint.so

load = func_sorcery.so

load = func_devstate.so

load = func_strings.so

; Core/PBX

load = pbx_config.so

; Resources

load = res_http_websocket.so

load = res_musiconhold.so

load = res_pjproject.so

load = res_pjsip_acl.so

load = res_pjsip_authenticator_digest.so

load = res_pjsip_caller_id.so

load = res_pjsip_dialog_info_body_generator.so

load = res_pjsip_diversion.so

load = res_pjsip_dtmf_info.so

load = res_pjsip_endpoint_identifier_anonymous.so

load = res_pjsip_endpoint_identifier_ip.so

load = res_pjsip_endpoint_identifier_user.so

load = res_pjsip_exten_state.so

load = res_pjsip_header_funcs.so

load = res_pjsip_logger.so

load = res_pjsip_messaging.so

load = res_pjsip_mwi_body_generator.so

load = res_pjsip_mwi.so

load = res_pjsip_nat.so

load = res_pjsip_notify.so

load = res_pjsip_one_touch_record_info.so

load = res_pjsip_outbound_authenticator_digest.so

load = res_pjsip_outbound_publish.so

load = res_pjsip_outbound_registration.so

load = res_pjsip_path.so

load = res_pjsip_pidf_body_generator.so

load = res_pjsip_pidf_digium_body_supplement.so

load = res_pjsip_pidf_eyebeam_body_supplement.so

load = res_pjsip_publish_asterisk.so

load = res_pjsip_pubsub.so

load = res_pjsip_refer.so

load = res_pjsip_registrar.so

load = res_pjsip_rfc3326.so

load = res_pjsip_sdp_rtp.so

load = res_pjsip_send_to_voicemail.so

load = res_pjsip_session.so

load = res_pjsip.so

load = res_pjsip_t38.so

load = res_pjsip_transport_websocket.so

load = res_pjsip_xpidf_body_generator.so

load = res_rtp_asterisk.so

load = res_sorcery_astdb.so

load = res_sorcery_config.so

load = res_sorcery_memory.so

load = res_sorcery_realtime.so

load = res_timing_timerfd.so


; Do not load res_hep and kin unless you are using HEP monitoring

; <http://sipcapture.org> in your network.


noload = res_hep.so

noload = res_hep_pjsip.so

noload = res_hep_rtcp.so


; ------------Добавляю свои


load = res_clioriginate.so

load = app_originate.so

load = app_echo

load = app_stream_echo.so


; -----------------------------------------Отладка

load = app_agent_pool.so

load = app_alarmreceiver.so

load = app_amd.so

load = app_attended_transfer.so

load = app_audiosocket.so

load = app_authenticate.so

load = app_blind_transfer.so

load = app_bridgeaddchan.so

load = app_cdr.so

load = app_celgenuserevent.so

load = app_chanisavail.so

load = app_channelredirect.so

load = app_chanspy.so

load = app_controlplayback.so

load = app_dictate.so

load = app_directed_pickup.so

load = app_dtmfstore.so

load = app_dumpchan.so

load = app_exec.so

load = app_externalivr.so

load = app_festival.so

load = app_flash.so

load = app_followme.so

load = app_forkcdr.so

load = app_jack.so

load = app_mf.so

load = app_milliwatt.so

load = app_minivm.so

load = app_mixmonitor.so

load = app_morsecode.so

load = app_mp3.so

load = app_page.so

load = app_playtones.so

load = app_privacy.so

load = app_read.so

load = app_readexten.so

load = app_record.so

load = app_reload.so

load = app_sayunixtime.so

load = app_senddtmf.so

load = app_sendtext.so

load = app_sf.so

load = app_sms.so

load = app_softhangup.so

load = app_speech_utils.so

load = app_stasis.so

load = app_system.so

load = app_talkdetect.so

load = app_test.so

load = app_transfer.so

load = app_userevent.so

load = app_waitforcond.so

load = app_waitforring.so

load = app_waitforsilence.so

load = app_waituntil.so

load = app_while.so

load = chan_audiosocket.so
load = chan_rtp.so
load = codec_adpcm.so

load = codec_alaw.so

load = codec_dahdi.so

load = codec_g726.so

load = codec_ilbc.so

load = codec_lpc10.so

load = codec_speex.so

load = format_g719.so

load = format_g723.so

load = format_g726.so

load = format_g729.so

load = format_h263.so

load = format_h264.so

load = format_ilbc.so

load = format_mp3.so

load = func_blacklist.so

load = func_callcompletion.so

load = func_channel.so

load = func_config.so

load = func_cut.so
load = func_dialgroup.so

load = func_dialplan.so

load = func_enum.so

load = func_env.so

load = func_evalexten.so

load = func_extstate.so

load = func_frame_drop.so

load = func_frame_trace.so

load = func_global.so

load = func_groupcount.so

load = func_hangupcause.so

load = func_holdintercept.so

load = func_iconv.so

load = func_jitterbuffer.so

load = func_json.so

load = func_lock.so

load = func_logic.so

load = func_math.so

load = func_module.so
load = func_periodic_hook.so

load = func_pitchshift.so

load = func_pjsip_aor.so

load = func_pjsip_contact.so

load = func_presencestate.so

load = func_rand.so

load = func_realtime.so

load = func_sayfiles.so

load = func_scramble.so

load = func_shell.so
load = func_sprintf.so

load = func_srv.so

load = func_sysinfo.so

load = func_talkdetect.so

load = func_timeout.so

load = func_uri.so

load = func_version.so

load = func_vmcount.so

load = func_volume.so

load = pbx_ael.so

load = pbx_loopback.so
load = pbx_realtime.so

load = pbx_spool.so


load = res_aeap.so

load = res_ael_share.so

load = res_audiosocket.so

load = res_clialiases.so

load = res_convert.so

load = res_fax.so load = res_fax_spandsp.so

load = res_format_attr_celt.so

load = res_format_attr_g729.so

load = res_format_attr_h263.so

load = res_format_attr_h264.so

load = res_format_attr_ilbc.so

load = res_http_post.so

load = res_limit.so

load = res_manager_devicestate.so

load = res_manager_presencestate.so

load = res_mutestream.so

load = res_mwi_devstate.so

load = res_parking.so

load = res_phoneprov.so

load = res_pjsip_config_wizard.so

load = res_pjsip_dlg_options.so

load = res_pjsip_empty_info.so

load = res_pjsip_history.so

load = res_pjsip_sips_contact.so

load = res_realtime.so

load = res_resolver_unbound.so

load = res_rtp_multicast.so

load = res_security_log.so

load = res_smdi.so

load = res_snmp.so

load = res_sorcery_memory_cache.so

load = res_speech.so

load = res_speech_aeap.so

load = res_srtp.so

load = res_stasis.so

load = res_stasis_answer.so

load = res_stasis_device_state.so

load = res_stasis_playback.so

load = res_stasis_recording.so

load = res_stasis_snoop.so

load = res_statsd.so

load = res_stun_monitor.so

load = res_timing_dahdi.so

load = res_timing_pthread.so

load = res_tonedetect.so

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


Вот и всё. Теперь будем канючить деньги на 24-портовый голосовой шлюз, что бы подключить удалённый офис. :)


Надеюсь мой опус поможет кому то не плясать по грабелькам.


Попозже может опишу, как я ставил VirtualBox на Ubuntu Server в консоли и настраивал проброс USB в гостевую систему из консоли. Это я делал для того, что бы подключить панасоник к компу с астериск, на комп поставить virtualBox, поставить на виртуалку W2K, и на W2K поставить maitenance console и настраивать панасоника не выходя из кабинета. Ибо заманался я бегать в другой корпус с ноутом, подстраивать мелочи всякие на панасе.

Меня приятно поразили консольные возможности VirtualBox'а.


Кстати, никто не знает, что за ошибка выскакивает на 2.10 - настройка АОН внутренних абонентов?

Лига Сисадминов

2.8K постов19.2K подписчик

Правила сообщества

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

5
Автор поста оценил этот комментарий

Это ты ещё в 4.1.1 не заполнял имена номеров, ну например кто сидит за этим телефоном. Панас работает в кодировке win1251, а астериск в utf8. Приходится лезть в кастомы что бы была перекодировка. А иначе на sip телефонах и в cdr будут вопросы.

И да, freepbx намного удобнеее голой консоли.

раскрыть ветку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества