Propojení SIPu se Skypem
Situace a cíl
Mějme tři uživatele. Jeden umí telefonovat s druhým přes Skype a druhý se třením přes službu využívající protokol SIP.
Druhý používá Linux. Skype provozuje ve VirtualBoxu (to není tak podstatné).
Chceme spojit prvního se třetím přes druhého.
Výhody
- Spojení prvního a třetího za součet cen obou hovorů.
Nevýhody
- Provoz si prodlužuje cestu přes druhého.
- Druhý určuje, s kým se první spojí. První je na něm tedy závislý, nemůže sám vytáčet. Druhý je v roli spojovatelky.
Postup
Spojení se odehrává u druhého. Postup se tedy týká jeho.
Druhý spustí oba klienty a propojí je křížem.
Napojení VirtualBoxu na Alsu.
- Volba a nastavení SIP klienta.
- Napojení Linphonu na Alsu.
- Křížové spojení.
- Spouštění a ladění
1. Napojení VirtualBoxu na Alsu.
Před spuštěním VirtualBoxu nastavit proměnné prostředí:
Výstup z VirtualBoxu
export VBOX_ALSA_DAC_DEV=plughw:1,0,0
Vstup do VirtualBoxu
export VBOX_ALSA_ADC_DEV=plughw:1,1,1
Zaškrtnout Počítač/Nastavení/Zvuk/Povolit zvuk
Nastavit Počítač/Nastavení/Zvuk/Zvukový ovladač pro hosta na Zvukový ovladač ALSA
2. Volba a nastavení SIP klienta.
Potřebujeme
- aby fungoval na naší lince (s naším operátorem),
- aby podporoval Alsu a umožnil nastavit zařízení a
- aby byl stabilní.
Ačkoli rád používám Twinkle, v mém případě nesplňuje poslední podmínku. Po nějaké době hovoru se v jednom směru zasekne, tedy třetí neslyší prvního. Při zavěšení se pak přestane překreslovat a vysvobodí ho až kill -9.
Linphone zatím vyhovuje. Jeho nastavení pro mě nebylo intuitivní, ale když se ví jak na to, je snadné. Něco lze naklikat, něco napsat do konfiguračního souboru.
Pro použití s operátorem 802.cz jsem v záložce Go/Preferences/SIP přidal proxy s nastavením
SIP Identity na sip:910806396@hlas.802.cz a
SIP proxy na sip:hlas.802.cz.
3. Napojení Linphonu na Alsu.
V konfiguračním souboru ~/.gnome2/linphone jsem si pak přidal do sekce [sound] identifikátor Alsího zařízení: alsadev=linphone. To lze pak vybrat v klikátku nebo nastavit v souboru:
playback_dev_id=ALSA: linphone capture_dev_id=ALSA: linphone
Nevymyslel jsem, jak si pomocí alsadev nachystat více identifikátorů (například jeden na mikrofon a druhý na sluchátka).
V souboru ~/.asoundrc jsem definoval zařízení linphone:
pcm.linphone {
type asym
playback.pcm "plughw:1,0,1"
capture.pcm "plughw:1,1,0"
}
4. Křížové spojení.
Vyzkoušel jsem kde co, zafungovalo až spojení pomocí jaderného modulu snd-aloop. Modul by měl být od verze 2.6.37 ve strumu jádra. Do svého jádra 2.6.34 jsem ho dostal prostým nakopírováním z alsa-driver-1.0.23.tar.bz2 a úpravou souborů KConfig a Makefile.
Ve značení plughw:1,0,0 vycházím z toho, že modul snd-aloop v počítači představuje druhou (tedy 1) zvukovou kartu. Místo pouhého hw jsem použil plughw, abych měl zajištěno přizpůsobení zvukových formátů. (Bez toho to nefunguje, hlásí to chybu. Možná by se dalo řešit jiným nastavením.)
5. Spouštění a ladění
Zvukové klienty, tedy SIP klienta a počítač ve VirtualBoxu, je třeba spustit, až když jsou nachystána zvuková zařízení včetně ~/.asoundrc. Pořadí popisu tedy neodpovídá pořadí spouštění.
Zkoušet zvuková zařízení lze snadno pomocí programů aplay/arecord:
arecord -D hw:1,1,1 -f cd | aplay aplay -D linphone test.wav ...
