Portál AbcLinuxu, 4. května 2025 23:08
Motivací je pracovat (zjišťovat informace, posílat SMS, zálohovat, apod.) s mobilním telefonem (Sony Ericsson K300i) pomocí počítače (notebook HP Compaq nx6110 s GNU/Linuxem Ubuntu 7.04) a programů gammu a wammu.
Předesílám, že výpisy jsou z důvodu zachování soukromí upraveny a mohou být zkráceny. Telefonní i jiná čísla a jména jsou smyšlená.
Nainstalujeme program gammu.
mermar@gati:~$ sudo apt-get install gammu
Pro informaci uvádím jeho verzi.
mermar@gati:~$ gammu --version Warning: No configuration file found! [Gammu version 1.09.00 built 22:16:54 Dec 6 2006 in gcc 4.1]
Vytvoříme konfigurační soubor. Ten obsahuje dvě různé konfigurace. První je pro práci přes IrDA, druhá pro práci přes datový kabel. Vždy když budeme spouštět příkaz gammu, zvolíme patřičnou konfiguraci pomocí čísla. Zápis příkazu tedy bude vypadat gammu N --any-command, kde N je číslo konfigurace. Čísluje se od 0, nula se neuvádí v konfiguračním souboru a nemusí se uvádět ani za příkazem gammu - jde o implicitní volbu.
# ~/.gammurc # Sony Ericsson K300i [gammu] # For IrDA. # Info, phonebook, todo should work. port = /dev/ircomm0 connection = irdaobex model = seobex [gammu1] # For data cable (USB-RS232). # Info, sms, phonebook, enhancedphonebook, calendar, todo, call, logo, ringtone should work. port = /dev/ttyUSB0 connection = at115200
Dokumentace ke gammu je bohužel velmi špatná. U většiny přepínačů je uveden pouze jejich název, bez vysvětlení co dělá. V podstatě zcela chybí příklady použití. A daly by se vytknout ještě další věci. Gammu toho umí víc, než je zde popsáno. Zmiňuji pouze věci, které mi fungují nebo považuji za užitečné. Předesílám, že získání poznámek (gammu 1 --getallnotes) nefunguje a snaha o stažení kalendáře (gammu 1 --getallcalendar) skončí segfaultem. Příkazy, které zde uvádím u propojení kabelem a nejsou u propojení přes IrDA, přes IrDA nefungují.
Zprovozníme IrDA. Identifikujeme telefon.
mermar@gati:~$ gammu 0 --identify Manufacturer : Sony Ericsson Model : unknown (K300i) Firmware : prgCXC125978_EU_1_KR (20R2BA010TTTT00) IMEI : 123456789098765
Zjistíme aktuální stav telefonu.
mermar@gati:~$ gammu 0 --monitor 1 Press Ctrl+C to break... Entering monitor mode... Enabling info about incoming SMS : Function not implemented. Help required. Enabling info about incoming CB : Function not implemented. Help required. Enabling info about calls : Function not implemented. Help required. Enabling info about USSD : Function not implemented. Help required. Phone phonebook : Used 049, Free 461 ToDos : Used 1, Free 379 Calendar : Used 0, Free 379 Leaving monitor mode...
Stáhneme z telefonu TODO list (obsahuje jedinou položku).
mermar@gati:~$ gammu 0 --getalltodo Press Ctrl+C to break... Location : 1 Note type : Memo (Miscellaneous) Priority : Medium Text : "Otestovat sit." Silent alarm : Thu 14 Jun 2007 08:00:00 AM Private : No LUID : "00010000006E"
Vypíšeme telefoní seznam z telefonu.
mermar@gati:~$ gammu 0 --getallmemory ME Press Ctrl+C to break... Memory ME, Location 1 First name : "Ondrej" Mobile number : "+420777765432" LUID : "00000000002D" Memory ME, Location 2 First name : "Dalibor" Mobile number : "+420777234567" LUID : "00000000001F"
Zapojíme datový kabel. Identifikujeme telefon.
mermar@gati:~$ gammu 1 --identify Manufacturer : Sony Ericsson Model : K300i (AAB-1021071-BV) Firmware : R2BA010 IMEI : 123456789098765 Product code : AAB-1021071-BV SIM IMSI : 098765432123456
Zjistíme aktuální stav telefonu (gammu s tímto přepínačem pokaždé vytuhne).
mermar@gati:~$ gammu 1 --monitor 1 Press Ctrl+C to break... Entering monitor mode... Enabling info about incoming SMS : No error. Enabling info about incoming CB : No error. Enabling info about calls : No error. Enabling info about USSD : No error. SIM phonebook : Used 051, Free 169 Dialled numbers : Used 002, Free 028 Received numbers : Used 001, Free 029 Missed numbers : Used 000, Free 030 Phone phonebook : Used 049, Free 461 ToDos : Used 1, Free 379 Calendar : Used 0, Free 379 Battery level : 74 percent Battery capacity : 531 mAh Battery temp. : 23 C Phone temp. : 25 C Battery voltage : 3880 mV Charge voltage : 0 mV Charge current : 0 mA Phone current : -6 mA Charge state : powered from battery Signal strength : -113 dBm Network level : 0 percent SIM SMS status : 7 used, 0 unread, 25 locations Phone SMS status : 47 used, 0 unread, 85 locations Network state : home network Network : 123 45 (Vodafone CZ, Czech Republic), LAC AAFA, CID 0000
Zjistíme informace o síti
mermar@gati:~$ gammu 1 --networkinfo Network state : home network Network : 123 45 (Vodafone CZ, Czech Republic), LAC AAFA, CellID 0000
Vypíšeme informace o filesystému.
mermar@gati:~$ gammu 1 --getfilesystemstatusFree memory: 2786304, total memory: 0 Used by: Images: 1073578, Sounds: 0, Themes: 0
Vypíšeme strukturu filesystému (stejný výstup jako gammu 1 --getfilesystem flatall).
mermar@gati:~$ gammu 1 --getfilesystem flat Folder "" |-- Folder "Pictures" | |-- "ethernet.png" | |-- "hora.jpg" | |-- "dla.png" | |-- "Skate Jump.svgz" | |-- "Sony Ericsson.gif" | |-- Folder "My" | | |-- "0734645348.jpg" | | |-- "0345037148.jpg" | |-- Folder "camera_semc" | | |-- "Picture(1).jpg" | | |-- "Picture(3).jpg" | | |-- "Picture(2).jpg" |-- Folder "Sounds" | |-- "Thinking.imy" | |-- "Greeting.mid" | |-- "MusicDJ Demo.mid" | |-- "Sony Ericsson.mid" | |-- "Train.mp3" |-- Folder "Themes" | |-- "Lunarspots.thm" |-- Folder "Videos" | |-- Folder "camera" |-- Folder "Other" | |-- "file1." Phone memory: 0 bytes (free 2786304 bytes, used -2786304 bytes) Used by: Images: 1073578, Sounds: 0, Themes: 0
Zjistíme datum a čas, které jsou nastaveny v telefonu.
mermar@gati:~$ gammu 1 --getdatetime Phone time is Fri 13 Jul 2007 05:39:35 PM Time format is 24 hours Date format is YY MM DD, date separator is -
Nastavíme datuma a čas telefonu podle datumu a času v počítači.
mermar@gati:~$ gammu 1 --setdatetime Setting time in phone to the time on PC.
Vypíšeme nastavení alarmu telefonu. Vrátí čas jednorázového alarmu, je-li nastaven. Není-li nastaven jednorázový alarm, vrátí čas opakovaného alarmu. Vrací chybně "Every day" bez ohledu na skutečné nastavení.
mermar@gati:~$ gammu 1 --getalarm Date: Every day Time: 05:15
Nastavíme jednorázový alarm na 05:10.
mermar@gati:~$ gammu 1 --setalarm 05 10
Stáhneme z telefonu TODO list (obsahuje jedinou položku).
mermar@gati:~$ gammu 1 --getalltodo Press Ctrl+C to break... Location : 1 Note type : Memo (Miscellaneous) Priority : Medium Text : "Otestovat sit." Silent alarm : Thu 14 Jun 2007 08:00:00 AM Private : No LUID : "00010000006E"
Pošleme SMS s textem Toto je text SMS. na číslo +420777123456. Přepínačem -report vyžádáme Delivery report. Přepínačem -validity MAX nastavíme Validity period na Network maximum. SMS nezůstane uložena v paměti telefonu ani na SIM kartě.
mermar@gati:~$ echo "Toto je text nasi zkusebni SMS." | gammu 1 --sendsms TEXT +420777123456 -report -validity MAX If you want break, press Ctrl+C... Sending SMS 1/1....waiting for network answer..OK, message reference=0
Stáhneme všechny SMS z paměti telefonu i ze SIM karty. Protože SMS může být hodně, je výstup přesměrován do souboru downloaded_sms.
mermar@gati:~$ gammu 1 --getallsms > downloaded_sms
Zazálohujeme všechny SMS z paměti telefonu i ze SIM karty do souboru backup_sms.
mermar@gati:~$ gammu 1 --backupsms backup_sms Delete each sms after backup (yes/no/ALL/ONLY/NONE) ? no Backup sms from folder "Inbox" (SIM) (yes/no/ALL/ONLY/NONE) ? yes Backup sms from folder "Outbox" (SIM) (yes/no/ALL/ONLY/NONE) ? yes Backup sms from folder "Inbox" (yes/no/ALL/ONLY/NONE) ? yes Backup sms from folder "Outbox" (yes/no/ALL/ONLY/NONE) ? yes
Vypíšeme všechny adresáře s SMS.
mermar@gati:~$ gammu 1 --getsmsfolders 1. " Inbox", SIM memory, Inbox folder 2. " Outbox", SIM memory 3. " Inbox", phone memory, Inbox folder 4. " Outbox", phone memory
Vymažeme všechny SMS z adresáře Outbox.
mermar@gati:~$ gammu 1 --deleteallsms 2 Deleting SMS from "Outbox" folder:
Vytočíme telefonní číslo +420777123456 (zavoláme na toto číslo).
mermar@gati:~$ gammu 1 --dialvoice +420777123456
Vypíšeme volané hovory.
mermar@gati:~$ gammu 1 --getallmemory DC Press Ctrl+C to break... Memory DC, Location 1 General number : "+420777123456" Name : "Petr" Date and time : Fri 12 Jul 4007 04:45:00 PM Memory DC, Location 2 General number : "+420776654321" Name : "Michal" Date and time : Thu 02 Jan 3970 11:00:00 AM
Vypíšeme zmeškané hovory (žádné nebyly).
mermar@gati:~$ gammu 1 --getallmemory MC Press Ctrl+C to break...
Vypíšeme přijaté hovory.
mermar@gati:~$ gammu 1 --getallmemory RC Press Ctrl+C to break... Memory RC, Location 1 General number : "+420777123456" Name : "Petr" Date and time : Fri 14 Jul 4007 04:10:00 PM
Vypíšeme telefoní seznam ze SIM karty.
mermar@gati:~$ gammu 1 --getallmemory SM Press Ctrl+C to break... Memory SM, Location 1 General number : "*77" Name : "Oskarlinka" Memory SM, Location 2 General number : "+420466367890" Name : "Jiri"
Vypíšeme telefoní seznam z telefonu.
mermar@gati:~$ gammu 1 --getallmemory ME Press Ctrl+C to break... Memory ME, Location 1 First name : "Ondrej" Mobile number : "+420777765432" LUID : "00000000002D" Memory ME, Location 2 First name : "Dalibor" Mobile number : "+420777234567" LUID : "00000000001F"
Pro práci v GUI slouží program wammu. Zvládá/nezvládá stejné věci jako gammu. Pokud při prvním spuštění nenalezne vlastní konfigurační soubor, použije konfigurační soubor gammu, což je velmi příjemná vlastnost.
Nainstalujeme wammu.
mermar@gati:~$ sudo apt-get install wammu
Nejprve musíme nastavit způsob připojení ve Wammu -> Settings na záložce Connection (nastavení můžeme opsat z konfiguračního souboru gammu). Potom telefon připojíme Phone -> Connect. Pak můžeme poměrně intuitivně pracovat. Platí stejně jako u gammu, že různé způsoby připojení určují co vše můžeme provádět a snaha o stažení kalendáře skončí rovněž s chybou (a tudíž nefunguje ani Backups -> Save).
SIM = Subscriber Identity Module
SMS = Short Message Service
EMS = Enhanced Messaging
MMS = Multimedia Messaging
Obrázek 1 - okno programu wammu při připojení K300i přes IrDA.
Obrázek 2 - okno programu wammu při připojení K300i přes datový kabel.
Blog OBEX a K300i přes IrDA i kabel
Blog IrDA port (USB dongles)
gammu
wammu
Tiskni
Sdílej:
První je pro práci přes IrDA,Pokud tam použiješ připojení at, bude ti fungovat to samé jako přes kabel.
Dokumentace ke gammu je bohužel velmi špatná. U většiny přepínačů je uveden pouze jejich název, bez vysvětlení co dělá.Viděl si man stránku?
získání poznámek (gammu 1 --getallnotes) nefungujeTelefon to AFAIK nepodporuje.
snaha o stažení kalendáře (gammu 1 --getallcalendar) skončí segfaultemKde je bug report? I když stejně první co ti řeknu je upgradovat gammu
Není-li nastaven jednorázový alarm, vrátí čas opakovaného alarmu.Pokud je nastaveno víc alarmů, je potřeba zadat pozici, kterou chceš číst
Vrací chybně "Every day" bez ohledu na skutečné nastavení.Kde je bugreport?
Nejprve musíme nastavit způsob připojení ve Wammu -> Settings na záložce ConnectionAktuální Wammu sdílí nastavení s Gammu a není potřeba konfigurovat dvakrát.
--getalarm Get alarm from phone --setalarm hour minuteTo je z té man stránky. Dokumentace na webu je shodného obsahu. Za prvé, i když jsou přepínače poměrně srozumitelné, měla by být jejich funkce alespoň jednou větou popsána. Za druhé, nikde není zmíněno, že je třeba zadat nějakou pozici, takže dokumentace nehovoří celou pravdu (a myslím, že jsem v dokumentaci zahlédl i místa, která jsou vyloženě špatně, ale nehodlám je znovu hledat). Za třetí, nikde není napsáno, jak se tento přepínač chová ("Vrátí čas jednorázového alarmu, je-li nastaven. Není-li nastaven jednorázový alarm, vrátí čas opakovaného alarmu."). Za čtvrté v dokumentaci by měly být uvedeny i příklady použítí tohoto přepínače. Bohužel, musím trvat na špatné dokumentaci. I když ti to možná jako autorovi programu nepřijde (protože ho znáš), já jako uživatel to tak vidím. Až na těch několik chybiček považuji program za dobrý a tímto Ti děkuji.
Ad bugreporty. Podle tvých vlastních slov je první krok aktualizace na poslední stabilní verzi gammu. Aktualizaci provedu, až ji provede moje distribuce. Kompilovat nehodlám.Ok, ale bez nahlášení chyba nebude opravená nikdy
Říkáš to, co jsem napsal ("Pokud při prvním spuštění nenalezne vlastní konfigurační soubor, použije konfigurační soubor gammu, což je velmi příjemná vlastnost."). Reaguješ však na návod jak změnit způsob připojení mezi IrDA a kabelem (gammu N). Je nutné provést nastavení, jak jsem popsal.Právě že toho už není potřeba, Wammu nyní využívá přímo konfiguraci Gammu a stačí jen vybrat sekci, která se má použít.
Man stránka jako taková by možná stačila, ale nemůže nahrazovat uživatelskou dokumentaci.Man stránka určitě je a bude hlavní zdroj informací. Na to psát několikaset stránkový manuál v docbooku prostě nemám čas. Nicméně dobrovolníci jsou vítáni
Bohužel, musím trvat na špatné dokumentaci.Toho jsem si vědom. Koneckonců pro další verzi už se aspoň man stránka automaticky generuje z nápovědy, takže nehrozí neaktuálnost parametrů v man stránce. Dokumentace byla v Gammu vždy na posledním místě a od té doby co jsem vedoucím projektu se to snažím trochu změnit. Nicméně zatím došlo hlavně na dokumentaci API, která běžné uživatele asi moc nezajímá.
Gammu je fajn.I když jsem po nějaké době zjistil, že mi při odesílání zkracuje dlouhé SMS (neposílá jich více) a z manuálu nevyčetl jak na to (ok, hledal jsem jen fulltextem, číst to celé nebudu).gammu --sendsms EMS +420800123456 -text "Jakykoliv text"
Wammu mi přijde nefunkční. Při pokusu stáhnout třeba TODO to jde do kolen (nebo to byl možná ten kalendář, už je to déle).Mě funguje a dokud tu chybu nikdo nenahlásí, tak prostě nemůže být opravena.
Ono ale popravdě, dokud nepůjde synchronizace s nějakým PIN systémem, je to jen na hraní. Zatím jsem to využil jen k hledání fulltextem v SMS a skriptíku na jejich odesílání. A běžnému odesílání z konzole, je to pro mne mnohem rychlejší.Od toho je OpenSync.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.