Michal Čihař - Blog Archives for Gammu

Gammu stable version 1.22.0

After two and half months of development, new Gammu stable release is out. Since last testing version there are only minor changes in vCard export, but full changelog since 1.21.0 is quite long:

  • Disable ATOBEX for Motorola V180.
  • vCard can now store caller group and private flag (bug #269).
  • vCard now stores location and memory type.
  • Add ID for Nokia 6131 NFC (bug #775).
  • Better skipping of corrupted messages in AT (bug #768).
  • Autoload 6510 module if phone is S40 (bug #767).
  • Add ID for Nokia 6500s (bug #770).
  • Add automatic detection of Nokia phones (bug #770).
  • Catch error when calls can not be deleted (bug #738).
  • Better documentation of addnew (bug #734).
  • Fix detection of OBEX capability on older Siemens phones.
  • Try to detect wrongly formatted CMGL reply (bug #771);
  • Handle phones which fail to report supported charsets.
  • Fixed encoding of WAP indicator messages.
  • Support for photos in vCard (bug #227).
  • vC* saving now protects against buffer overflows.
  • Drop own crosscompilation support, rely on CMake one.
  • Also standard CMake parameters used when possible (eg. BUILD_SHARED_LIBS).
  • Search does not create thread for non existing devices.
  • Fixed possible crash when backing up ringtones.
  • Fix possible race condition in searching.
  • Fixed invoking of CMake with output to custom directory.
  • Compile on platforms where ssize_t does not exist.
  • Fix detection of towlower on some compilers.
  • Make Bluetooth compile using BCC.
  • Fix compilation if strtoull does not exist.
  • Compile on platforms where intptr_t does not exist.
  • Fixed compilation in BCC (see changes above).
  • Check whether compiler supports FUNCTION.
  • Reimplement locking and add tests for it.
  • GSM_SetDebugFileDescriptor now accepts flag whether file descriptor can be closed (bug #749).
  • Soname change due to API breakage (see above).
  • Fixed compilation on Mac OS X, thanks to Juan A. Bertolin for testing.
  • Script gammu-config can now also work with whiptail.
  • Minor fixes in gammu-config script.
  • Extra spaces from connection or device name are now stripped.
  • Automatically reinitialize FBUS connection if it is dropped.
  • Disable OBEX with Motorola Z6c, it is broken (bug #746).
  • Refresh manufacturer information on second init of AT (bug #746).
  • Always get charset information on AT phone initialization.
  • Better handling of OBEX switching for Siemens phones.
  • Fix flags for 2630 and 3109c (bug #752).
  • Fix handling of caller groups and picture IDs (bug #752).
  • Properly set calendar location while adding (bug #747).
  • Sign Windows binaries during build.
  • Detect long FM station names (bug #727).
  • Add ID for Nokia 2630b.
  • Handle properly very long lines in vcards (bug #728).
  • Do not build and install locales if gettext is not compiled.
  • Increase number of calendar entries (bug #725).
  • Leak free test runs.
  • Support backup of phone phonebook from Siemens (bug #732).
  • Properly handle GetNextMemory on Siemens (bug #732).
  • Save textual category to backup (bug #737).
  • Enable dashboard testing using CTest/CDash.
  • Add option to do coverage analysis.
  • Properly handle debug file closing.
  • Add test case for debug logging.
  • Fix decoding of some SMS messages from Nokia phones (bug #735).
  • Hack for (still) unknown error code (bug #733).

You can download from usual place: http://cihar.com/gammu/, Binary packages will be available soon in all usual places (Debian Unstable, OpenSuse build service, Ubuntu PPA repository).

Gammu test version 1.21.94

New Gammu testing release has just born. The largest changes are in vCard handler. It now supports photos in vCard and should properly handle error states which previously would lead to crash. This also leads to changed API for encoding/decoding vCard/vCalendar/vNote entries. Rest of changes is usual amount of bug fixes.

Full list of changes:

  • Better skipping of currupted messages in AT (bug #768).
  • Autoload 6510 module if phone is S40 (bug #767).
  • Add ID for Nokia 6500s (bug #770).
  • Add automatic detection of Nokia phones (bug #770).
  • Catch error when calls can not be deleted (bug #738).
  • Better documentation of addnew (bug #734).
  • Fix detection of OBEX capability on older Siemens phones.
  • Try to detect wrongly formatted CMGL reply (bug #771);
  • Handle phones which fail to report supported charsets.
  • Fixed encoding of WAP indicator messages.
  • Support for photos in vCard (bug #227).
  • vC* saving now protects against buffer overflows.

You can download from usual place: http://cihar.com/gammu/,

Debian users will find packages in experimental soon.

Gammu test version 1.21.93

After few weeks of debugging build system, new Gammu version is out. This time most fixes are in build system area, especially now it is possible to compile Gammu using Borland C++ 5.5. Also my hacks for crosscompilation to Windows on Linux have been dropped in favour of crosscompilation features in CMake 2.6.

Full list of changes:

  • Drop own crosscompilation support, rely on CMake one.
  • Also standard CMake parameters used when possible (eg. BUILD_SHARED_LIBS).
  • Search does not create thread for non existing devices.
  • Fixed possible crash when backing up ringtones.
  • Fix possible race condition in searching.
  • Fixed invoking of CMake with output to custom directory.
  • Compile on platforms where ssize_t does not exist.
  • Fix detection of towlower on some compilers.
  • Make Bluetooth compile using BCC.
  • Fix compilation if strtoull does not exist.
  • Compile on platforms where intptr_t does not exist.
  • Fixed compilation in BCC (see changes above).
  • Check whether compiler supports __FUNCTION__.

You can download from usual place: http://cihar.com/gammu/,

Debian users will find packages in experimental soon.

Gammu test version 1.21.92

Good news everyone, new Gammu testing version is out. This time biggest fix is Bluetooth support for Mac OS X, accompanied with fixed locking on some architectures and improved debug configuration, to allow proper integration with python-gammu.

Full list of changes:

  • Reimplement locking and add tests for it.
  • GSM_SetDebugFileDescriptor now accepts flag whether file descriptor can be closed (bug #749).
  • Soname change due to API breakage (see above).
  • Fixed compilation on Mac OS X, thanks to Juan A. Bertolin for testing.

You can download from usual place: http://cihar.com/gammu/,

Debian users will find packages in experimental soon.

Gammu test version 1.21.91

Good news everyone, new Gammu testing version is out. Fixes are there for everybody, starting in AT engine initialization, going through FBUS and Nokia drivers up to OBEX handling in Siemens phones.

Full list of changes:

  • Script gammu-config can now also work with whiptail.
  • Minor fixes in gammu-config script.
  • Extra spaces from connection or device name are now stripped.
  • Automatically reinitialize FBUS connection if it is dropped.
  • Disable OBEX with Motorola Z6c, it is broken (bug #746).
  • Refresh manufacturer information on second init of AT (bug #746).
  • Always get charset information on AT phone initialization.
  • Better handling of OBEX switching for Siemens phones.
  • Fix flags for 2630 and 3109c (bug #752).
  • Fix handling of caller groups and picture IDs (bug #752).
  • Properly set calendar location while adding (bug #747).

You can download from usual place: http://cihar.com/gammu/,

Debian users will find packages in experimental soon.

Gammu test version 1.21.90

I just published new Gammu testing version. Major changes are in handling some special Nokia responses, handling of Siemens phonebook entries and introduction of automatic testing using CDash on http://cdash.cihar.com/index.php?project=Gammu. Full list of changes:

  • Sign Windows binaries during build.
  • Detect long FM station names (bug #727).
  • Add ID for Nokia 2630b.
  • Handle properly very long lines in vcards (bug #728).
  • Do not build and install locales if gettext is not compiled.
  • Increase number of calendar entries (bug #725).
  • Leak free test runs.
  • Support backup of phone phonebook from Siemens (bug #732).
  • Properly handle GetNextMemory on Siemens (bug #732).
  • Save textual category to backup (bug #737).
  • Enable dashboard testing using CTest/CDash.
  • Add option to do coverage analysis.
  • Properly handle debug file closing.
  • Add test case for debug logging.
  • Fix decoding of some SMS messages from Nokia phones (bug #735).
  • Hack for (still) unknown error code (bug #733).

You can download from usual place: http://cihar.com/gammu/, Debian users will find packages in experimental soon.

Gammu news

I finally catched up with Gammu backlog from holidays and now it is time to move it a bit further.

Automatic testing

During this week I set up CDash instance for acquiring results of automatic nightly checks of Gammu. Each night Gammu is build on several hosts (currently Debian x86_64, Debian x86, SUSE x86_64 and crosscompilation for Windows on Debian) and results are posted to the dashboard. If you have some other architecture which could participate in testing, you are welcome to contribute! It is simple - just checkout svn, create build directory and configure there Gammu using cmake. You can enable coverage tests (-DCOVERAGE=ON). Then just run every night make Nightly for regular testing or make NightlyMemoryCheck to do dynamic allocation analysis. There is more detailed documentation in sources (INSTALL file).

Thanks to this, I can hopefully sooner spot regressions and possible problems on different architectures.

Roadmap

With upgrade of Mantis, new feature called roadmaps arrived. I started to use it for planning features in future Gammu releases, so you can see what bugs should be fixed in future releases in Gammu roadmap. Currently there are not much things planned, because till now I had to focus only on bug fixing, but I think with 1.21.0 we have reached much better quality than in past releases and now is time to do some important changes in the core.

Nokia phone required

As you can already see in roadmap, I plan some bigger changes to Gammu core. I currently have on Sony-Ericsson phone and I would not be able to properly test how these changes will affect Nokia drivers. So for start I will need at least Nokia Series 40 3rd edition phone. Nokia 6233 (or 6234) currently looks as a reasonable choice, but if you have any hints for cheaper one with similar features, just drop me an email.

Perfect would be if somebody would have half broken phone (I do not intend to use it for anything else than Gammu development, so broken camera, speaker, microphone or display does not really matter) and will be willing to donate it to me. If this will not work out, I'll have to buy used one and I will try to collect funds for this. If you want to contribute, check my donations page for possibilities.

Opps, I did it again

It looks like I again did same mistake with Gammu and python-gammu binaries - they started to crash randomly. It was again caused by fact, that they were linked to two C runtime libraries (msvcrt.dll and msvcr70.dll). I should make some automated check for this to avoid uploading so broken things, but I don't know any command line tool which can list DLLs which are required by exe and which works on Linux (Wine is okay too). Anyway the binaries has been just recompiled and uploaded, so if Gammu or python-gammu crashes for you, please download new version.

PS: Thanks to Olaf Leidinger, now I know how to check it automatically:

/usr/i586-mingw32msvc/bin/objdump -x filename.exe | grep "DLL Name"

Gammu stable version 1.21.0

Good news everyone, after long time of inactivity and huge development over past month, new stable Gammu release is out. Since 1.20.94, there are only minor fixes in handling some corner cases in AT parser, but full list of changes since last stable 1.20.0 is quite long:

  • Handle properly empty SMSC (bug #722).
  • Disable AT/OBEX for Motorola K1v (bug #721).
  • Automatically switch to nodtr connection if DTR/RTS setting fails.
  • More verbose debug messages in API.
  • Free phone data after testing model to avoid memory leaks.
  • Properly handle if IMEI is too long (bug #709).
  • Try to handle situation when CMGL does not list all messages.
  • Fix typo in MySQL file (bug #716).
  • Better parsing of USSD replies (bug #718).
  • Properly restore caller groups on Nokia 2630 (bug #706).
  • Fix listing of used calendar locations on Nokia (bug #710).
  • Properly encode class and coding to SMS (bug #714).
  • SMSD for MySQL no longer fails when sending message (bug #715).
  • SMSD stores signal and battery state in PostgreSQL.
  • Properly handle multiline firmware information.
  • Fix crash when decoding EMS pictures (bug #549).
  • Motorola phones sometimes reply in UCS2 instead of HEX (bug #712).
  • Use native functions sleep/usleep if available.
  • Improve FBUS initialization sequence.
  • Fixed reading for ringtones from Nokia 5510 (bug #529).
  • Do not crash if ringtone name is too long (bug #529).
  • Fix possible crash while reading of messages using AT.
  • Increase timeout when writing SMS message (bug #596).
  • Cleaned up issues with reading from Bluez (bug #670).
  • Fixed Windows binary (define properly MSVCRT to use) (bug #683).
  • Fixed compilation with CURL on Windows.
  • Windows binary now has only MySQL and CURL support (bug #683).
  • Fill in timezone information (bug #696).
  • Detect reserver message type (bug #691).
  • Increase timeout for switching to OBEX (bug #690).
  • Disable postal address for Nokia 2600 (bug #659).
  • Encode phone number only with phones which need it (bug #654).
  • Increase timeout for writing memory entry (bug #654).
  • Handle properly when phoned does not tell SMSC (bug #616).
  • Initial support for waiting calls in AT engine (bug #551).
  • Fixed dialing on some AT phones (bug #471).
  • Support for skipping location when reading (bug #467).
  • Improved detection of serial port Bluetooth channel.
  • SMSD reconnects to MySQL (thanks to Wouter D'Haeseleer).
  • SMSD stores signal and battery state in MySQL (thanks to Wouter D'Haeseleer).
  • Initial support for reading messages in simple text mode.
  • Report if monitor failed because of an error.
  • Handle not found errors on OBEX connect (bug #705).
  • Report more verbosely that some feature has been disabled on compile time.
  • Add ID for Nokia 5200 (thanks to Andreas Metzler).
  • Add two IDs for Nokia 2600 (bug #659).
  • Add ID for lot's of Sony Ericsson phones.
  • Use AT parser for AT+CPBS? reply.
  • Use all possible ways to get memory status (bug #687).
  • Detect more error codes from Nokia phones (bug #659).
  • Fix decoding of text using iconv (bug #687).
  • Fix linker flags check, caused failures on MacOS X.
  • Add second ID for Nokia 2610 (thanks to Nicolas Forget).
  • Add ID for Nokia 6060.
  • Try to use OPP and PBAP Bluetooth profiles also (not tested!).
  • DumpMessage is not printing last char (bug #692).
  • Support for favorite messaging number (bug #693).
  • Add ID for Nokia 2630 (bug #693).
  • First attempt for Bluetooth support on OS X.
  • Do not open debug file for second time when using global debug.
  • Fix DC memory name printing (bug #698).
  • Add API function GSM_MemoryTypeToString.
  • Report correct size of DC/RC/MC memory on DCT4 phones (bug #699).
  • Store favorite messaging as phone number, not only as ID (bug #693).
  • Avoid empty line at beginning of vCard backup (bug #701).
  • Add ID for Nokia 2760.
  • Catch not acceptable errors in OBEX (bug #702).
  • Operation not allowed is not an unknown problem (bug #678).
  • Add ID for Nokia 5000 (bug #677).
  • Increase limit of files for DCT4 and check array size (bug #676).
  • Allow to enter PIN code from stdin (bug #633).
  • Handle HEX reply instead of UCS-2 from Motorola (bug #697).
  • Avoid decoding of @ in email address (bug #697).
  • ABI change, because of increasing some limits.
  • Config file option rsslevel no longer works, superseded by 'gammu checkversion'.
  • Dropped GSM_ReadHTTPFile from API, gammu now uses CURL instead.
  • Support for longer notes on Nokia phones (bug #607).
  • Add deleteallmemory command.
  • Ignore trailing spaces in AT commands.
  • Fix crash on long lines in vCards.
  • Compatibility with broken iWOW responses (bug #650).
  • Do not use hard delete flag for updating entries (bug #634).
  • Identify Nokia 1200 (bug #649).
  • Fix parsing of date/time reply on Sony Ericsson G900 (bug #647).
  • Increased limit for folder name (bug #646).
  • Fix parsing of empty date (bug #643).
  • Recognize general number on Nokia 6230i (bug #655).
  • Fix writing of phone number using HEX charset (bug #512).
  • Recognize more CME errors, thanks to Paolo oopla@users.sf.net.

You can download from usual place: http://cihar.com/gammu/, Binary packages will be available soon.

Why to make sensible error messages?

Yesterday I faced problem with VMware server that it can not run 64-bit guest system. I'm using 64-bit SUSE and 64-bit VMware, so it should work, right? I can select 64-bit system in VMware, but the guest is simply 32-bit without any error.

In documentation, man can find only "VMware Server supports 64-bit guest operating systems only on host machines with supported processors.". How helpful! After a bit of googling, it turns out that VT needs to be enabled and usually it is not enabled in BIOS (any reason for this?).

So let's reboot, go to BIOS, enable VT and it should work. Unfortunately not, after reboot, still same problem. I was almost given up at this point, but I decided to recheck BIOS, whether I really enabled the right thing. Yes I did, but I did not notice small note, that to apply this setting, I need to power off and on the computer. That was the trick! Now it finally works. I just wonder why it has to be so complicated...