Archive for August, 2008

One Month of iPhone 3G

Having had my iPhone 3G for a month now, I think it’s time for a quick status report slash review slash list of annoyances – in no particular order:

Missing Status Bar Icon for Ringer/Silent Switch
A minor thing, sure, but I can not count how many times I have missed an SMS notification or an incoming call simply because I’ve forgotten to turn the ringer back on upon leaving a meeting. Of course, the switch on the side indicates the current ringer mode, but a visual indication in the top status bar on the display would be nice.

Occasional Crashes
More than a few times when the iPod application was playing music and Safari was busy downloading or scrolling a heavy weight web page, my iPhone crashed or locked up hard – requiring a manual restart (holding down Home and Sleep/Wake button for a few seconds) in order to get back to working condition. Rather annoying. [Update: This seems to have been fixed by update to iPhone OS 2.0.2]

Inconsistent Screen Locking
Locking the screen while the iPod is playing does not lock the volume keys on the side – often resulting in the volume keys being activated by accident while the iPhone is tucked away in my pocket, which is quite annoying. It would be nice to be able to configure this behaviour. Also, double-clicking the Home button while the screen is locked still brings up the iPod controls (if this feature is enabled in Settings) – again, it would be nice if it was configurable if the screen lock should disable double-clicking as well.

Lack of Calendar Synchronization
For some reason, Apple does not (yet?) allow third party applications to access the calendar on the iPhone, and since the built-in calendar can only synchronize with MobileMe and Exchange over the air, this leaves the calendar application pretty much useless if you do not use either of those for your calendar. I’d love to see the calendar opened either opened up for third party applications or at least a way to synchronize the calendar using less … ahem … expensive solutions (e.g. the calendar on my iPod Nano can read a standard *.ics file – the iPhone e-mail client can read a *.vcf file and import its contents into the Contacts application, but it can not open an *.ics file).

Despite the above annoyances I am still quite pleased with my iPhone 3G. It is by far the most advanced mobile device I have ever had, and it beats the features of my previous mobile phones with several lengths. I hope – perhaps I’m just being naive – that the rumoured 2.1 firmware will address some of the above mentioned issues.

No, this post won’t be able to tell you how to synchronize contacts, calendar, bookmarks etc. from your FreeBSD box to your iPhone or iPhone 3G, sorry – still working on that. It will, however, show you how to make FreeBSD recognize your iPhone as a camera device, so that you can download the photos taken with your iPhone to a FreeBSD host.

First of all, make sure you’re using a kernel with ugen(4) support – but either without uhid(4) support or FreeBSD 8-CURRENT in SVN revision 181482 or newer – or manually apply this patch:

[Update: I have just MFC'ed this patch to RELENG_7 (SVN revision 181636) and RELENG_6 (SVN revision 181637), so this patch will be included in FreeBSD 7.1 and 6.4].

Index: sys/dev/usb/usb_quirks.c
===================================================================
--- sys/dev/usb/usb_quirks.c	(revision 181481)
+++ sys/dev/usb/usb_quirks.c	(working copy)
@@ -106,6 +106,10 @@
 	ANY, { UQ_HID_IGNORE }},
  { USB_VENDOR_MGE, USB_PRODUCT_MGE_UPS2,
 	ANY, { UQ_HID_IGNORE }},
+ { USB_VENDOR_APPLE, USB_PRODUCT_APPLE_IPHONE,
+	ANY, { UQ_HID_IGNORE }},
+ { USB_VENDOR_APPLE, USB_PRODUCT_APPLE_IPHONE_3G,
+	ANY, { UQ_HID_IGNORE }},

  /* Devices which should be ignored by both ukbd and uhid */
  { USB_VENDOR_CYPRESS, USB_PRODUCT_CYPRESS_WISPY1A,
Index: sys/dev/usb/usbdevs
===================================================================
--- sys/dev/usb/usbdevs	(revision 181481)
+++ sys/dev/usb/usbdevs	(working copy)
@@ -853,6 +853,8 @@
 product APPLE IPOD_08		0x1208	iPod '08'
 product APPLE IPODVIDEO		0x1209	iPod Video
 product APPLE IPODNANO		0x120a	iPod Nano
+product APPLE IPHONE		0x1290	iPhone
+product APPLE IPHONE_3G		0x1292	iPhone 3G
 product APPLE ETHERNET		0x1402	Ethernet A1277

 /* Arkmicro Technologies */

Next, make sure you have graphics/gphoto2 and graphics/libgphoto2 (the latter needs to be 2.4.2_1 or later for the iPhone 3G to work) installed.

Plug in the USB cable from your iPhone and verify using dmesg(8) that it shows up as an ugen(4) device as shown below:

kernel: ugen1: <Apple Inc. iPhone, class 0/0, rev 2.00/0.01, addr 2> on uhub4

That’s it – you should now be able to access the photos on your iPhone using ghoto2(1) – just replace ‘Apple iPhone (PTP Mode)’ with ‘Apple iPhone 3G (PTP Mode)’ for the iPhone 3G:

$ gphoto2 --camera 'Apple iPhone (PTP Mode)' -L
There is no file in folder '/'.
There is no file in folder '/store_00010002'.
There is no file in folder '/store_00010002/DCIM'.
There are 7 files in folder '/store_00010002/DCIM/100APPLE'.
#1     IMG_0007.JPG                   49 KB image/jpeg
#2     IMG_0013.JPG                  389 KB image/jpeg
#3     IMG_0022.JPG                   26 KB image/jpeg
#4     IMG_0026.JPG                  358 KB image/jpeg
#5     IMG_0027.JPG                  357 KB image/jpeg
#6     IMG_0028.JPG                  381 KB image/jpeg
#7     IMG_0029.JPG                  377 KB image/jpeg
There is no file in folder '/store_00010002/DCIM/999APPLE'.

See the gphoto2(1) man page for further usage instructions.

Of course, you can also use a graphical client such as graphics/gtkam as long as it uses libgphoto2 for camera access.

Back to top