Display Mirroring on the iPad 1

This is interesting, but I don’t have any video out accessories to test it on.

You just need to add a boolean that says display-mirroring: YES to the model plist (K48AP.plist for first-gen iPad) under /System/Library/CoreServices/Springboard.app/ and reboot the device.

Obviously this requires a jailbroken iPad for you to access the file. It also seems to work with devices that use the A4 chip.

I guess this is how Apple did their presentations all along, at all of these iOS device unveiling events. It’s just that now they opened up the hardware to the public (and indirectly, the configuration parameter).

Source: http://www.natureseyestudios.be/blog/enable-display-mirroring-on-first-gen-ipad/
http://www.macpoint.be/enable-display-mirroring-on-first-gen-ipad/

Update 17-Oct-2011: Updated URL

iOS Profiles & Encrypted Backups

When I got my iPhone, it uses a 4-digit passcode to protect its contents. Unsatisfied with this, I found the iPhone Configuration Utility (iPCU), which was the only way at that time to enable complex passcodes (passwords) on the phone. After creating a profile and uploading it to the phone using the iPCU, my backups were all forced to be encrypted.

Encrypted backups are not good for tinkering because you need to decrypt the files before you can edit them, and you need to re-encrypt them for it to be restored to the phone. I’m not sure about the encryption scheme, or which programs can access encrypted backups since the encryption happens on the phone.

I don’t remember seeing an option in the iPCU that says “Force iTunes encryption” or similar, so why was this happening? Recently when I was digging through the iPhone OS Enterprise Deployment Guide, I found an important note, under “Backing Up a Device with iTunes”, that reads “If the device being backed up has any encrypted profiles installed, iTunes requires the user to enable backup encryption.”

If you upload any profiles using iPCU, it’s convenient – it goes into the phone directly, but at the same time it also encrypts the configuration for the phone.

For my new iOS devices I simply signed it, and uploaded onto a web server and accessed it from the device. This prevents the backups from being forced to be encrypted, but at the same time it creates a chicken and egg problem – how does my device access the web server without the WiFi profile settings?

I’ll look into that another time.

“Personal [WiFi] Hotspot” comes to iPhone 4 CDMA

Apple has just announced a new iPhone 4 hardware revision that allows it to be used on CDMA networks.

[photo stolen from Ars Technica]

Interestingly, the new iPhone comes with a Personal Hotspot preference that allows it to share its 3G connection over WiFi. Ars Technica has photos of the new preference menus. I must stress the photos shown here were not taken by me.

Of course the Android people have had this for a while (provided their phones could be updated to Froyo). They called it the Portable Wi-Fi hotspot.

I hope Apple rolls this out to the rest of the iPhone users, and hopefully if it isn’t enabled by default, it will have some secret pref that allows it to be activated easily.

mdns-repeater: mDNS across subnets

Update 21-Sep-2011: Added an Installation section and updated the binaries on Bitbucket.

Update 20-Oct-2020: Moved repository to GitHub

As you may know, I have a couple of Apple devices. Apple is fond of using Multicast DNS (mDNS) for their service discovery. The recent addition to these services being AirPrint (wireless printing service) and AirPlay (wireless audio/video streaming) from your iOS devices.

My home is setup in such a way that the wired and wireless networks are on 2 separate subnets. mDNS uses a multicast address that is “administratively scoped”, meaning the packets will not travel across subnets. I tried fiddling around with iptables rules and looked around for how I can route these packets across the subnets, but to no avail.

There is another solution – a repeater daemon that sits on the router and repeats packets between the 2 subnets. Avahi is used to provide mDNS services and it has a reflector mode that does exactly this. A more lightweight solution was TiVoBridge, which supposedly performs the same task but it’s much smaller. I tried to compile and set up TiVoBridge, but it required a config file and I couldn’t really get it to work the way I wanted it to. There’s an even lighter-weight solution called SAY, but it uses libpcap.

Enter mdns-repeater – a small Linux daemon that does exactly what I want it to do. I have a Linksys WRT54G which runs dd-wrt. This program was intended to be compiled for and installed on the Linksys router. As with all other programs that run on the router, it requires no configuration.

The default dd-wrt configuration has 2 interfaces – vlan1 for the WAN interface and br0 for the wireless interface (and 4-port switch). The program accepts the arguments vlan1 and br0 and begins repeating packets from vlan1 to br0 and vice-versa. I can now get my iOS devices to detect wired servers like a print server for AirPrint.

mdns-repeater is released under GPLv2. Feel free to change it to repeat whatever protocol you want. Patches to add functionality and bug fixes are welcome. You can contact me via bitbucket.orggithub.com, or if you clone the repository my email is in the commits.

Continue reading