Archive for March, 2013

OCRKit 2.0 - a free update for existing users

Sunday, March 31st, 2013

These days we just released the first major update -2.0- of our OCRKit.

The version 2.0 greatly improved performance on latest Mac’s with many CPU cores (4, 8, …) When we started to work on OCRKit initially, dual-core CPUs where the state-of-the-art for desktop and portable laptops. Times changed, now 4 or even 8 (with Hyper Threading) cores are standard in Mac’s and so we refactored and tuned our OCRKit to make good use of all those cores. All this leads to improve recognition performances of x4, x8, or eve more times depending on the available core count, and input material (e.g. processing may be limited by the combination of decompression, re-compression in certain scenarios).

As promised we also further improved PDF compression, and thus now added a dedicated file format for Highly Compressed PDF. Making OCRKit an even more useful PDF re-compressor, too.

And best of all: To thank all the early bird customers of v1 the new OCRKit v2 is a free updates for all. Enjoy and spread the word!

OCRKit - Recognition revisited.

MINI Connected runs QNX

Sunday, March 31st, 2013

Well, not that I was too interested about it, nor thinking about it, just accidentally stumbled over the MINI Connected system update: UPD01005.bin, a nice, plain tar archive:

SWIP_00000B97_003_005_005.xml
SWUP_00000B98_002_006_005.bin
SWUP_00000B98_003_005_005.bin
SWUP_00000B99_001_012_000.bin
SWUP_00000B99_003_005_004.bin

Which in turn are similar nice tar archives as well:

beschreibungstabelle.sgbm
Phone-2.6.5.tar
beschreibungstabelle.sgbm
Phone-3.5.5.tar
beschreibungstabelle.sgbm
MME-1.12.0.tar
post_deinst.scr
post_inst.scr
beschreibungstabelle.sgbm
MME-3.5.4.tar

Which -you can guess by now from the file extension- are nice tar archives again:

MME-1.12.0/
MME-1.12.0/HBMedia/
MME-1.12.0/HBMedia/db/
MME-1.12.0/HBMedia/db/mme_combined.sql
MME-1.12.0/HBMedia/qnx/
MME-1.12.0/HBMedia/qnx/etc/
MME-1.12.0/HBMedia/qnx/etc/post_starting_qdb.sh
MME-1.12.0/MANIFEST
MME-3.5.4/
MME-3.5.4/HBMedia/
MME-3.5.4/HBMedia/qnx/
MME-3.5.4/HBMedia/qnx/bin/
MME-3.5.4/HBMedia/qnx/bin/io-media-generic
MME-3.5.4/HBMedia/qnx/lib/
MME-3.5.4/HBMedia/qnx/lib/dll/
MME-3.5.4/HBMedia/qnx/lib/dll/cipher-aes.so
MME-3.5.4/HBMedia/qnx/lib/dll/iofs-hbextdrive.so
MME-3.5.4/HBMedia/qnx/lib/dll/iofs-i2c-ipod.so
MME-3.5.4/HBMedia/qnx/lib/dll/iofs-ipod.so
MME-3.5.4/HBMedia/qnx/lib/dll/iofs-msdrm10.so
MME-3.5.4/HBMedia/qnx/lib/dll/iofs-pfs.so
MME-3.5.4/HBMedia/qnx/lib/dll/iofs-ser-ipod.so
MME-3.5.4/HBMedia/qnx/lib/dll/iofs-usb-ipod.so
MME-3.5.4/HBMedia/qnx/lib/dll/mme-imgprc-gf.so
MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/
MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/aac_parser.so
MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/audio_streamer.so
MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/audio_writer.so
MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/fildes_streamer.so
MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/media_streamer.so
MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/mp4_parser.so
MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/mpega_parser.so
MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/queue_filter.so
MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/ren_raac_decoder.so
MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/stream_reader.so
MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/tmpfile_streamer.so
MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/wav_parser.so
MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/wma9_decoder.so
MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/wma9_parser.so
MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/wms_control.so
MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/wms_streamer.so
MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/xing_mpega_decoder.so
MME-3.5.4/HBMedia/qnx/lib/libaoi.so.1
MME-3.5.4/HBMedia/qnx/lib/libmmedia.so.1
MME-3.5.4/HBMedia/qnx/lib/libmmfilter.so.1
MME-3.5.4/MANIFEST
Phone-2.6.5/
Phone-2.6.5/HBPhone/
Phone-2.6.5/HBPhone/exe/
Phone-2.6.5/HBPhone/exe/libbssservice.so
Phone-2.6.5/HBPhone/exe/libdmlservice.so
Phone-2.6.5/HBPhone/exe/libdsiservice.so
Phone-2.6.5/HBPhone/exe/libmediaservice.so
Phone-2.6.5/HBPhone/exe/libphoneservice.so
Phone-2.6.5/HBPhone/exe/libpimservice.so
Phone-2.6.5/MANIFEST
Phone-3.5.5/
Phone-3.5.5/HBPhone/
Phone-3.5.5/HBPhone/exe/
Phone-3.5.5/HBPhone/exe/libbssservice.so
Phone-3.5.5/HBPhone/exe/libdataservice.so
Phone-3.5.5/HBPhone/exe/libdmlservice.so
Phone-3.5.5/HBPhone/exe/libmediaservice.so
Phone-3.5.5/HBPhone/exe/libpdiparser.so
Phone-3.5.5/HBPhone/exe/libphoneservice.so
Phone-3.5.5/HBPhone/exe/libpimservice.so
Phone-3.5.5/HBPhone/exe/libsimservice.so
Phone-3.5.5/MANIFEST

Oh! Nice shared-obejct’s and Shell-scripts, for QNX, how handy! ;-)

When Mac OS X WiFi Country Code goes wrong…

Friday, March 29th, 2013

Usually Mac OS X is a joy to use as things use to just work ™. However, sometimes -well- they just do not :-/ Recently I had a very mysterious issue in Moscow, Russia. Often WiFi would just work ™, however, sometimes that specific access point station would simply not show up at all in the network list. I kept resettings that AP point a couple of times and even started to reboot Mac OS X in misbelieve - what else should one do when that WiFi would not show up nor auto-connect again? More mysteriously that AP I kept resettings worked just fine with with plenty of iPhone’s and iPad’s and the like around. I started to really wonder what was wrong with my Mac when I noticed holding the option key to the boot chooser, that the recovery netbook WiFi selector would show that AP’s SSID network! Hah! I thought it must be some caching issue / plist corruption whatever that irritates the full Mac OS X network stack, but even a few more reboots and wiping of the network settings still made no difference. It was then when I noticed something strange was going on with the Wifi Country Code and thus allowed frequency channels (yeah, I got some inside knowledge, working on drivers and such).

Mar 18 19:53:25 retina kernel[0]: en0: 802.11d country code set to ‘TW’.
Mar 18 22:56:20 retina kernel[0]: en0: 802.11d country code set to ‘X3′.
Mar 18 22:56:21 retina kernel[0]: en0: 802.11d country code set to ‘TW’.
Mar 18 22:56:38 retina kernel[0]: en0: 802.11d country code set to ‘X3′.
Mar 18 22:56:40 retina kernel[0]: en0: 802.11d country code set to ‘TW’.
Mar 18 22:57:26 retina kernel[0]: en0: 802.11d country code set to ‘TW’.
Mar 18 22:59:11 retina kernel[0]: en0: 802.11d country code set to ‘TW’.
Mar 18 23:00:58 retina kernel[0]: en0: 802.11d country code set to ‘X3′.

TW? Taiwan? And what is X3? Rest of world or what??? Either does not sound particularly Russian, so where does it come from? Turns out in Mac OS X Lions 10.7 / 10.8 there is a command line WiFi scanner hidden in the Apple80211.framework:

$ /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -s
SSID BSSID RSSI CHANNEL HT CC SECURITY (auth/unicast/group)
Xyz 01:23:45:67:89:a0 -83 13 Y TW WPA(PSK/TKIP/TKIP) WPA2(PSK/AES,TKIP/TKIP)

It reveled the three or so access points around all were broadcasting with a TW Country Code, obscure bits, nobody cares about, set in the Linux-based firmware once in Taiwan, probably a hardcoded C struct, and forgotten they are. And then all those forgotten bits and pieces lead to this user annoying behavior in the field. Thank you very much! :-/ Mac OS X picks up the mostly TW Country Code bits in the air, … and then concludes channel 13 is not valid, and, … your precious network never makes it into the higher levels of the network stack, nor the UI to choose from.

Given that we can not (too easily and legally) hack into those offending access points and alter the Country Code, how can we fix that? Turns out the access point had a nice sticker with username and password on the bottom side, which allowed me to login and notice it’s channel was set to “Auto”. This explains why sometimes the network worked for me, when the AP choose another channel than 13, … which allowed my MacBook to connect in the “TW” region.

A simply change from “Auto” to a channels with in the range that was not used around by other routers, and I had a WiFi connection happily ever after, …

I hope this helps, and educates not to broadcast random, and wrong settings thru the air!