顯示具有 電話 標籤的文章。 顯示所有文章
顯示具有 電話 標籤的文章。 顯示所有文章

2017年11月8日 星期三

RTP Payload Type

RTP 的 Payload Type 欄位 (PT) 用來對應的 RTP payload 所採用的格式,通常指的是影音編碼格式。

RTP 主規範 RFC 3350 預設 PT 佔 7 位元,不同的應用採用不同的 RTP profile 規範,PT 的位元數可以增減或擴充,可有不同的 PT 對應。 影音應用常用的 profile 是 RFC 3551《RTP Profile for Audio and Video Conferences with Minimal Control》,簡稱 RTP A/V Profile 或 RTP/AVP,PT 維持 7 位元。早期 PT 採用靜態對應,例如 0 就是 PCMU、8 就是 PCMA、18 就是 G.729 等,但這樣 128 個值無法滿足所有已有的和未來的編碼格式。

現在 SDP RFC4566、H.323/H.245 或其它協定,支援動態綁定 PT 到語音編碼,也就是在某個 RTP session 建立前,說明使用的 PT 值,其對應的編碼格式是什麼。此外,還可以附帶相關速率、通道數等資訊。新的編碼格式會使用動態 PT,使用註冊在 RTP Payload Format media types 中 media type 為 audio 或 video 的 subtype 作為名稱。

RTP Payload types (PT) for standard audio and video encodings 列出所有 PT 號碼的使用情形,其中 96 ~ 127 這 32 個值是動態對應應該先使用的部份。如不夠,再使用小於 63 中從未指定的部份。預設已經靜態對應的部份也可以動態使用,只是有些沒實作動態對應而可能造成衝突。
  1. 96 ~ 127:動態對應專用。
  2. < 63 的從未指定的部份:動態指定不會有衝突。
  3. 1, 2, 19, 64, 65:原本打算要用,但後來沒用。參考 RFC 3551、RFC 5761。
  4. 靜態指定的部份:
  5. 66 ~ 95:RTCP 跟 RTP 使用相同 UDP port 時,M 和 PT 欄位是 RTCP 的 packet type,用來區別出 RTCP,只能使用沒衝突的 PT。
    • 66 ~ 71:將來 RTCP 擴充的新 packet type。
    • 72 ~ 76:和 RTCP SR (200)、RR (201)、SDES (202)、BYE (203)、和 APP (204) 衝突。
    • 77, 78:和 RTP/AVPF 定義的 RTCP RTPFB 和 PSFB 衝突。
    • 79:和 RTCP XR 衝突。
    • 81:和 RTCP RSI 衝突。
    • 80, 82 ~ 95:將來 RTCP 擴充的新 packet type。

參考

  1. RFC 3551《RTP Profile for Audio and Video Conferences with Minimal Control》:RTP/AVP
  2. RFC 3550《RTP: A Transport Protocol for Real-Time Applications》
  3. RFC 5761《Multiplexing RTP Data and Control Packets on a Single Port》:討論 RTCP 跟 RTP 使用同一 UDP port 的衝突問題。
  4. RTCP Control Packet types (PT):RTCP packet type 列表。
  5. https://tools.ietf.org/id/draft-wu-avtcore-dynamic-pt-usage-02.html
  6. 其它 profile 有 RTP/SAVP [RFC3711]、RTP/AVPF [RFC4585]、RTP/SAVPF [RFC5124],皆以 RTP/AVP 為基礎。

2016年1月30日 星期六

台灣電信網路編碼計畫

電信網路編碼計畫 (Numbering Plan)

0[01][1-9].國際冠碼 + 國碼 + 區域號碼 + 客戶電話號碼
0[1-8]0X.智慧虛擬碼撥接服務
0[2-8][2-9]XXXXXXX.長途電話
09[0-8]XXXXXXX行動通訊服務
1[0-7]X服務電話
18XXX.撥號選接服務網路識別碼
19XX非營利服務電話
[2-9]X.市話服務 (局碼 + )
X 代表 0 ~ 9

參考來源:
  1. 電信網路編碼計畫
  2. https://en.wikipedia.org/wiki/Telephone_numbers_in_Taiwan
  3. 中華民國長途電話區號表

2015年11月9日 星期一

DTMF Decoder: HM9270D

HM9270D 是 DTMF 解碼器,將 16 種 DTMF 組合轉換成 4-bit 碼。

  1. IN+:內部 Op Amp 差動輸入
  2. IN-:內部 Op Amp 差動輸入
  3. GS:內部 Op Amp 差動輸出,作為回授使用。
  4. VREF:VDD/2 電壓輸出。
  5. INH:接 High 不偵測 A/B/C/D DTMF。內部 pull-down
  6. PWDN
  7. OSC1
  8. OSC2
  9. VSS:Ground。
  10. TOE (輸入):high 時輸出 Q1 ~ Q4 ,否則 tri-state。
  11. Q1 (data 輸出)
  12. Q2 (data 輸出)
  13. Q3 (data 輸出)
  14. Q4 (data 輸出)
  15. StD (Delayed Steering 輸出):high 時,表示有新的 Q1 ~ Q4
  16. ESt (Early Steering 輸出):偵測到 tone 立即輸出 high,否則立即輸出 low。
  17. St/GT (Steering 輸入及 Guard Time 輸出):包括 St 及 GT 兩種功能。St 是偵測電壓,如果 < VTSt 表示 DTMF 碼還在確認中。如果一超過 VTSt 表示已確認,允許更新內部 Q1~Q4 紀錄,此時 GT 輸出 high 直到 tone 結束。St/GT 通常接 RC 電路,VTSt 是 2.35V。
  18. VDD:5V 電源。
參考來源:
  1. http://www.teleic.com/PDF/EM9270.PDF
其它相關
  1. MT8870:DTMF 解碼
  2. HT9170:DTMF 解碼
  3. HT9172:DTMF 解碼
  4. MT8880:DTMF 解編碼
  5. DT210:DTMF 解編碼
  6. DTMF V1:DTMF 解編碼
  7. HT9032D:FSK 解碼

2015年9月28日 星期一

FXO/DAA 電路功能需求

電話線只有兩條線,可以雙向通話,又可以提供電源及響鈴,同時高出人聲頻率範圍可用 xDSL 技術傳上網數據資料。

話機可分成音頻訊號 (交流,AC) 跟電源 (直流,DC) 兩個路徑,這裡有個等效模型,DC 從 Vbatt 到 Rdc 提供通話時的電源。Cblock 阻擋 DC 進入 AC 路徑,而 Ldc 阻擋 AC 進入 DC 路徑,讓 DC 跟 AC 分別有大約 200 Ω 跟 600 Ω 的阻抗。

話機連接局端的界面成為 FXO,設備跟電話線之間連接的電路叫 DAA (Data Access Arrangement),作電氣隔離以符合電信要求,避免損壞電話機房,也保護話機。
  • Surge Protection:雷擊保護
  • Hook Switch 及 DC Termination:Hook Switch 就是一個開關控制是否摘機,可用傳統電驛或固態電驛。DC Termination 約 200 Ω,是 off-hook 接上的 DC 阻抗,使迴路電流流動,電壓降低,讓局端知道 off-hook 了。另外 DC Termination 需要串電感來阻擋 AC 電流進入,避免影響 AC 的阻抗。此電感常常用 Gyrator 電路等效出來,較小也較便宜。bridge recitifier -- 即使 tip/ring 反向亦能運作
  • Ring Detection:電話要響鈴時,局端會產生 Vring 高電壓、約 20 Hz 的低頻訊號,摘機時停止。(LED 顯示響鈴)
  • Signal Coupling
  • Hybrid:分離傳跟收的聲音,可能分離得不夠清楚,還需要 echo canceller 進一步處理。
  • Loop Current Detection (optional)
  • On-hook Monitor for Caller ID
  • Line Use Detection
  • Reverse Battery Detection
參考:
相關文章:
延伸閱讀:
  • UTC LS1240A ELECTRONIC TONE RINGER WITH BUILT-IN BRIDGE RECTIFIER
  • BL34018 或 MC34018 Handsfree speakerphone circuit
    • pin 16 V+:6 ~ 11 V (7.5V) 7mA 輸入
    • pin 18 /CS:決定是否輸出 Vcc
    • pin 20 Vcc:5.4V 輸出,可作為其它電路使用
    • pin 22 GND 
  • https://www.edn.com/get-power-from-a-telephone-line-without-disturbing-it/ 
  • ## FXO power

    降壓穩壓限流

    https://www.maximintegrated.com/en/app-notes/index.mvp/id/1923 Draw 150mW of Isolated Power from Off-Hook Phone Line

    http://www.edn.com/design/power-management/4315670/Get-power-from-a-telephone-line-without-disturbing-it Get power from a telephone line without disturbing it

    http://rtony56789.pixnet.net/blog/post/27467768
  • Line status 偵測
    光耦合器 in a voltage divider resistor network in tandem
    * 0 V:電話線沒接
    * ~0.45 V:off-hook
    * 5V 或 digital 1:on-hook

    seize the line:可在 protection fuse 及 varistor 之後使用 reed relay 及電阻。
  • 其它
    1. caller ID detection (on-hook DTMF/FSK detection)
    1. off-hook
    1. DTMF detection
    1. tone generation
    1. on-hook
    * IN4001, IN4148S

    1. 十秒內 ring + CID 符合三次接起 (設定:時間、次數、CID)
    1. 偵測 DTMF 碼作為指令
        * 設定回應:成功 -> 一短聲,失敗 -> 三短聲
        * 查詢會應:yes ->兩短聲,no-> 一長聲
    1. 掛斷 (timeout, 指令)

    [Si3050 + Si3011/18/19](https://www.silabs.com/Support%20Documents/TechnicalDocs/Si3050-11-18-19.pdf) Voice DAA
        * Si3050 可以透過 SPI 或 GCI,SPI 可以 daisy chain 多顆 Si3050
        * 不處理 Caller ID
    Si32919
        * 搭配 Si32178,同時有 FXS

    http://lirobo.blogspot.tw/2015/09/fxodaa.html
    http://lirobo.blogspot.tw/2012/09/fxs-uart.html

    AVR FXS/FXO:ATmega406 有 12-bit ADC

    ##
    在一對雙絞線<br>
    <ul><li>Disconnected</li>
    <li>DC loop current</li>
    <ul><li>DC</li>
    <li>hook</li>
    <ul><li>dial pulse</li>
    <li>flash: 20ms ~ 2sec</li></ul>
    <li>ringing: 20 Hz</li></ul>
    <li>AC audio signal</li>
    <ul><li>transmit and receive</li>
    <ul><li>DTMF, FSK, Voice, Fax, Modem, ...</li></ul>
    <li>xDSL<br>
    </li></ul></ul>
    <br>
    FXS<br>
    <a href="http://lirobo.blogspot.tw/2012/09/fxs-uart.html">http://lirobo.blogspot.tw/2012/09/fxs-uart.html</a><br>
    <br>
    Si3217x + Si32911/19 Single-Chip ProSLIC® <br>
    <br>
    Si32178/9<br>
    <h2>Si3210</h2>
    <code>The registers about ringing generation list in Si3210 Datasheet Table 30 (p. 43)</code><br>
    <br>
    <br>
    <code>Currently, the sinusoidal ringing is used, and RCO=0x7EF0, RNGX = 0x0160</code><br>
    <code>coeff = RCO/(2^15) = 32496/32768</code><br>
    <code>VPK = 64V (i.e., ring voltage)</code><br>
    <br>
    <br>
    <code>The REN or current depends on how much power VBAT can provide.</code><br>
    <code>Current VBAT setting should be -75V (DR74=0x32)</code><br>
    <br>
    <br>
    <code>Ring current for 1 REN is VPK / 6900 ohm = 9.3 mA</code>
    <h2>USB</h2>
    <a href="https://openusbfxs.wordpress.com/">Open USB FXS</a>: PIC18F2550 + Si3210 + Si3201<br>
    <ul><li>oufxs DAHDI driver:<a href="http://code.google.com/p/openusbfxs/">http://code.google.com/p/openusbfxs/</a>sangoma <a href="http://www.sangoma.com/telecom-interface-boards/analog-voice-boards/usb_fxo.html">u100</a> (wanpipe)</li></ul>
    digium s100u (wcusb): Tiger560B <br>
    <ul><li><a href="http://www.earth.li/~noodles/hardware-usbfxs.html">http://www.earth.li/~noodles/hardware-usbfxs.html</a></li></ul>
    xorcom (xpp_usb)<br>

    ## Si3210
    constant voltage zone
    * 由 TIP-to-RING Open-circuit voltage (V<sub>OC</sub>) 定義
    * 0 V to 94.5 V in 1.5 V  steps
    constant current zone
    * 由 loop current limit (I<sub>LIM</sub>) 定義
    * 20 mA to 41 mA in 3 mA steps

    inherent dc output resistance (R<sub>O</sub>) of 160Ω

    ## 電話線網路

    ## 電話線供電系統
    可供電瓦數,損耗
    mΩ/m
    AWG 越小越粗

    電話線線徑 2C 一般為 0.65mm,多P線為 0.5mm。
    電信機房到家用的是 0.4mm 多P 銅纜線...(600P)

    網路線強調高頻信號傳輸,對絞的目的就是要減少雜音(Noise),串音(Crosstalk)等干擾,橙/白橙,綠/白綠絞線次數每英吋約4次,藍/白藍,棕/白棕絞線次數每英吋約3次。

    有廠牌的 CAT6 網路線 23 AWG

    ### 並聯供電
    跟隨電壓供應電流
    電話可能摘機,所以供應電流只能緩慢增加

    ### 沒用的線路獨立供電

    ##
    [利用電話線供電的雙音門鈴電路圖](http://cocdig.com/docs/show-post-33268.html)

    ## FXS to FXO converter
    ARTECH AX301 http://www.artech.com.tw/showdetail.php?id=97&lang=EN

2015年8月22日 星期六

IMS PSI

Public Services:IMS 或其它網路的用戶不用特別申請就可以存取的服務。

Public Service Identifier (PSI):公眾服務識別碼,使用 SIP URI (定義在 RFC 3261) 或 tel URI (定義在 RFC 3966)。可分成 distinct PSI 跟 wildcard PSI 兩種,前者是單一識別碼,後者是符合正規表示式的識別碼集合,可簡化節點的運作及維護。

wildcard PSI 在 SIP URI 的使用者部份或 tel URI 的 telephone-subscriber 部份包含一個前後由「!」界定的正規表示式,使用 IEEE 1003.1-2004 Part 1 的第 9 章定義的 Extended Regular Expressions (ERE)

比較:Public User Identifier

參考來源
延伸閱讀

2015年1月29日 星期四

SIP

SIP (Session Initiation Protocol,會話發起協定) 讓兩個或以上用戶間建立各種形式的通話,稱為會話,包括多方會議、視訊、多媒體播放等等,主要的規格寫在 RFC 3261

會話 (session) 由 SIP 協定的 INVITE 方法建立,內容包含可用的媒體描述,讓各方協調出可互通的媒體類型。SIP 使用一些代理伺服器 (proxy) 協助轉送請求到用戶目前的位置、服務存取認證、服務提供者轉送政策等。SIP 也提供機制讓用戶註冊目前位置,給 proxy server 使用。

發話端知道受話端的電話號碼,但不知道目前的位置,所以 INVITE 請求會先在 SIP 的代理伺服器間轉送,直到受話端目前的位置,這個動作叫 routing。當請求到達受話端,受話端會回 response 給發話端。response 裡面包含受話端的 Contact,也就是受話端目前的位置。一開始的請求也包含了發話端的 Contact,這樣雙方就知道彼此的目前位置,接下來的訊息就可以直送對方,沒必要經過 SIP 代理伺服器轉送,增進整體效能,也減少處理延遲。


SIP 網路元件 (SIP elements)

SIP Methods

一些名詞
  • Transaction (交易):包括一個請求及其所有回應,採用類似 HTTP request/response transaction 模型。
    • 回應包括選擇性的 provisional 回應,到其最後回應。失敗的 INVITE 之後的 ACK 也算在同一 transaction。
    • regular transaction:INVITE、ACK、CANCEL 以外的 transaction
      • REGISTER
    • SIP transaction:
      • INVITE/2xx:接受 INVITE 並建立 session。
      • ACK:
      • INVITE/non-2xx/ACK:這是個特例,包含 ACK 也算在同一個 transaction,沿用 Via branch。
      • CANCEL:沿用 Via branch,取消 pending transaction。
    • stateful:會紀錄 transcation 狀態,當請求或回應進來會看是否屬於已存在的 transaction,方式是看 Via header 的 branch 參數。以前 RFC 2543 的舊方式比較複雜,需要去 hash To, From, Request-URI 及 CSeq。
    • stateless UAS:不送 1xx 回應、不重送回應、忽略 ACK 請求、忽略 CANCEL 請求、To tag
  • Call 或 Session (會話):由 dialog 建立及維護,包含所有參與的 dialog 及影音,可能有多個 dialog 的多方通話。

SIP Header 欄位 (UAC 送出的 SIP 請求至少要有 To、From、CSeq、Call-ID、Max-Forwards、及 Via)
DTMF relay
BLF
軟體

參考

  1. 相關 RFC
  2. http://www.iptel.org/sip/intro
Header 欄位格式

host = hostname / IPv4address / IPv6reference
  • 以 To header 為例,都會有 addr-spec 這部份,且必須是某個 scheme 加「:」開頭,常見的有 sip:、sips:、或 tel:
  • 不管是 sip: 或 sips:,以「@」結尾的 userinfo 是選項,hostport 是必須的,可有「;」開頭的 uri-parameters,「?」開頭的 headers 也是選項。

2014年11月24日 星期一

NAT 及 RTP proxy

RTP 封包無法直接送給 NAT 後面的 UA,需要知道 NAT 使用的 port。
  1. UA1 送 RTP 封包給 RTP Proxy (在 NAT1 開了通訊埠),但不知如何往 NAT2 哪個通訊埠送。
  2. UA2 送 RTP 封包給 RTP Proxy (在 NAT2 開了通訊埠),送給 NAT1 的通訊埠,再轉給 UA1
  3. RTP Proxy 已知道 NAT2 的通訊埠 , 將 UA1 的 RTP 封包送給 NAT2 的通訊埠,再轉給 UA2
如何避免 RTP proxy?

2014年2月7日 星期五

LED 顯示響鈴

電路圖如右,左邊二極體為 LED,原本是光耦合器的設計,未實際驗證過。

零件表
C10.47uF, 250V耦合響鈴訊號、阻隔 DC
R28.2kohm, 1/4W限制電流
ZD1, ZD218V Zener diode避免受到電壓較小的音頻訊號干擾
D11N4001避免逆向電流燒掉 LED,也可以換成另一顆 LED。
 LED  



參考來源:
延伸閱讀:

2012年9月21日 星期五

FXS 轉 UART

連接話機的界面是 FXS (Foreign eXchange Station),連接局端的界面是 (FXO, Foreign eXchange Office),FXS 或 FXO 轉換成其它界面叫 ATA (Analog Telephone Adaptor)。網路上可以找到兩個將 FXS 轉成 UART 的專題,都是 David Rowe 的傑作:一開始的「 $10 ATA」跟構想延伸的「Mesh Potato 的 FXS 界面」,想在無線路由器加 FXS 界面,而 UART 是無線路由器都有的界面,只藏在裡面的電路板上,baud rate 115 kbit/s 就夠 64 kbit/s 的語音使用。

「$10 ATA」後來也受到 Mesh Potato 影響,但最後資訊是去年三月,之後可能沒有進展,或者作者未公佈,主要缺如何一起在 UART 傳振鈴及 hook 資訊,跟整合測試。其架構如下:
     +---------------+   +--------------------+
     |     Hybrid    |<->|ADC/PWM             |
話機-| DC-DC/ringing |<->|PWM/ADC  ATmega328P |--UART
     | hook detector |-->|PWM                 |
     +---------------+   +--------------------+
ATmega328P 是 AVR 八位元微處理器,也用於 Arduino,可以處理類比訊號,用其 ADC 及 PWM 來轉換類比訊號。作者一系列文章:
Mesh Potato 已經是一個產品了,是一個含有 FXS 界面的戶外型 802.11bg mesh router,相當特別。架構如下:
     +--------+   +--------------------+  +------------+
     |        |<--|SPI                 |<-|GPIOs       |
話機-| Si3210 |   |       CPLD         |  |     AR2317 |
     |        |<->|TDM                 |->|UART Rx     |
     +--------+   +--------------------+  |            |
                  | ATmega8L(16B FIFO) |<-|UART Tx     |
                  +--------------------+  +------------+
AR2317 是 Atheros 的無線 MIPS 4KEc SoC,用於 AIR-300 等無線路由器。Si3210 是 FXS 界面晶片,包括 hybrid、DC-DC converter、振鈴、hook 偵測等,語音走 TDM,控制走 SPI。CPLD 主要是要轉換 UART 跟 TDM,但可能是內部 buffer 不夠,所以加 ATmega8L。

參考

  • Silvertel Ag2130 PSTN 界面模組。(RT03106)
  • USB FXS

SIP header Via

所有 SIP 訊息 都要有 Via,縮寫 v。一開始的 UAC 和後續途經的每個 proxy 都會疊加一個 Via 放傳送的位址,依序作為回應的路徑。 格式 sent-protocol sent-by [ ;branch= branch ][ ; 參數 ...] s...