Autopano Giga Wifi Bug

I’ve encountered an interesting bug in Autopano Giga (APG), a product from Kolor, as subsidiary of GoPro.

The Symptom:

Whenever APG is running, it constantly triggers the Mac wifi control software airportd to actively scan for available WIFI networks.

This happens when the system is connected via Ethernet, and not even using WIFI for its network traffic.

This happens despite options to send analytics, and check for beta versions being disabled.

Below, is 10 seconds of captured logfile from OS X’s wifi.log, covering launch, and then immediate quit.

287 lines of logfile in 10 seconds, and that rate continues for as long as the software is running. Once again, this machine is not using WIFI for any actual network traffic, and APG isn’t transmitting any data over this – it’s merely waking up the WIFI system, and telling it to scan the local basestations, and then writing a massive amount of data to multiple logfiles. God only knows what this would do to the battery life on a portable.

Turning off WIFI is the only way to make it stop.

The Cause:

Kolor’s official twitter account suggested to me that this is caused by APG looking for updates.

  • Where’s the setting to turn off checking for updates? I’ve turned off checking for beta versions, that makes no difference.
  • APG attempts to connect to google on quit, which you would only know if you had Little Snitch installed and telling you what apps are trying to phone home behind your back.
  • If it is an update check, why is APG looking for updates, every (approximately) 5 seconds as long as it is running?
  • Why is it powering up the WIFI scan, when the system is set to use Ethernet as its network?

The Horror:

Mon Apr 3 16:49:01.378 IPC: <airportd[54]> ADDED XPC CLIENT CONNECTION [AutopanoGiga (pid=1017, euid=502, egid=20)]
Mon Apr 3 16:49:01.379 Info: <airportd[54]> SCAN request received from pid 1017 (AutopanoGiga) with priority 0
Mon Apr 3 16:49:01.379 <airportd[54]> WARNING: AutopanoGiga (1017) is not entitled for com.apple.wifi.scan, temporarily allowing request with background priority —— all entitlement requirements will be strictly enforced in a future release
Mon Apr 3 16:49:01.380 <kernel> IO80211ScanManager::startScan: Broadcast scan request received from 'airportd' (pid 54) ().
Mon Apr 3 16:49:01.380 <kernel> IO80211ScanManager::startScan: Initiating scan.
Mon Apr 3 16:49:01.570 <kernel> IO80211ScanManager::scanDone: Scheduling cache purge timer in 30 seconds.
Mon Apr 3 16:49:01.570 <kernel> IO80211ScanManager::getScanResult: All scan results returned for 'airportd' (pid 54).
Mon Apr 3 16:49:01.570 Driver Event: <airportd[54]> _bsd_80211_event_callback: SCAN_CACHE_UPDATED (en2)
Mon Apr 3 16:49:01.570 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:01.570 <CWChannel: 0x7f9ba8508670> [channelNumber=1(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:01.570 <CWChannel: 0x7f9ba8506410> [channelNumber=2(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:01.570 <CWChannel: 0x7f9ba8508a70> [channelNumber=3(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:01.570 <CWChannel: 0x7f9ba8509ea0> [channelNumber=4(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:01.570 <CWChannel: 0x7f9ba8510260> [channelNumber=5(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:01.570 <CWChannel: 0x7f9ba8512a50> [channelNumber=6(2GHz), channelWidth={20MHz}, active]
Mon Apr 3 16:49:01.570 )} took 0.1901 seconds, returned 2 results
Mon Apr 3 16:49:01.570 Info: <Wi-Fi Menu Extra[289]> scan cache updated
Mon Apr 3 16:49:01.570 <kernel> IO80211ScanManager::startScan: Broadcast scan request received from 'airportd' (pid 54) ().
Mon Apr 3 16:49:01.570 <kernel> IO80211ScanManager::startScan: Initiating scan.
Mon Apr 3 16:49:01.571 Info: <airportd[54]> QUERY SCAN CACHE request received from pid 220 (locationd)
Mon Apr 3 16:49:01.760 <kernel> IO80211ScanManager::getScanResult: All scan results returned for 'airportd' (pid 54).
Mon Apr 3 16:49:01.761 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:01.761 <CWChannel: 0x7f9ba850f5e0> [channelNumber=7(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:01.761 <CWChannel: 0x7f9ba8508790> [channelNumber=8(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:01.761 <CWChannel: 0x7f9ba8525b70> [channelNumber=9(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:01.761 <CWChannel: 0x7f9ba850bc80> [channelNumber=10(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:01.761 <CWChannel: 0x7f9ba85270f0> [channelNumber=11(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:01.761 <CWChannel: 0x7f9ba8527030> [channelNumber=36(5GHz), channelWidth={40MHz(+1)}, active]
Mon Apr 3 16:49:01.761 )} took 0.1907 seconds, returned 0 results
Mon Apr 3 16:49:01.761 <kernel> IO80211ScanManager::startScan: Broadcast scan request received from 'airportd' (pid 54) ().
Mon Apr 3 16:49:01.761 <kernel> IO80211ScanManager::startScan: Initiating scan.
Mon Apr 3 16:49:01.973 <kernel> IO80211ScanManager::getScanResult: All scan results returned for 'airportd' (pid 54).
Mon Apr 3 16:49:01.973 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:01.973 <CWChannel: 0x7f9ba85084b0> [channelNumber=40(5GHz), channelWidth={40MHz(-1)}, active],
Mon Apr 3 16:49:01.973 <CWChannel: 0x7f9ba850f7b0> [channelNumber=44(5GHz), channelWidth={40MHz(+1)}, active],
Mon Apr 3 16:49:01.973 <CWChannel: 0x7f9ba853ff70> [channelNumber=48(5GHz), channelWidth={40MHz(-1)}, active],
Mon Apr 3 16:49:01.973 <CWChannel: 0x7f9ba851b2a0> [channelNumber=149(5GHz), channelWidth={80MHz}, active],
Mon Apr 3 16:49:01.973 <CWChannel: 0x7f9ba851b6c0> [channelNumber=153(5GHz), channelWidth={80MHz}, active],
Mon Apr 3 16:49:01.973 <CWChannel: 0x7f9ba851bae0> [channelNumber=157(5GHz), channelWidth={80MHz}, active]
Mon Apr 3 16:49:01.973 )} took 0.2124 seconds, returned 1 results
Mon Apr 3 16:49:01.973 Driver Event: <airportd[54]> _bsd_80211_event_callback: SCAN_CACHE_UPDATED (en2)
Mon Apr 3 16:49:01.974 <kernel> IO80211ScanManager::startScan: Broadcast scan request received from 'airportd' (pid 54) ().
Mon Apr 3 16:49:01.974 <kernel> IO80211ScanManager::startScan: Initiating scan.
Mon Apr 3 16:49:01.975 Info: <airportd[54]> QUERY SCAN CACHE request received from pid 220 (locationd)
Mon Apr 3 16:49:02.669 <kernel> IO80211ScanManager::getScanResult: All scan results returned for 'airportd' (pid 54).
Mon Apr 3 16:49:02.669 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:02.669 <CWChannel: 0x7f9ba851bf00> [channelNumber=161(5GHz), channelWidth={80MHz}, active],
Mon Apr 3 16:49:02.669 <CWChannel: 0x7f9ba851c320> [channelNumber=165(5GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:02.669 <CWChannel: 0x7f9ba8508c20> [channelNumber=12(2GHz), channelWidth={20MHz}],
Mon Apr 3 16:49:02.670 <CWChannel: 0x7f9ba8528c90> [channelNumber=13(2GHz), channelWidth={20MHz}],
Mon Apr 3 16:49:02.670 <CWChannel: 0x7f9ba850fa90> [channelNumber=52(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:02.670 <CWChannel: 0x7f9ba850e990> [channelNumber=56(5GHz), channelWidth={40MHz(-1)}, DFS]
Mon Apr 3 16:49:02.670 )} took 0.6960 seconds, returned 0 results
Mon Apr 3 16:49:02.670 Info: <Wi-Fi Menu Extra[289]> scan cache updated
Mon Apr 3 16:49:02.670 <kernel> IO80211ScanManager::startScan: Broadcast scan request received from 'airportd' (pid 54) ().
Mon Apr 3 16:49:02.670 <kernel> IO80211ScanManager::startScan: Initiating scan.
Mon Apr 3 16:49:03.589 <kernel> IO80211ScanManager::getScanResult: All scan results returned for 'airportd' (pid 54).
Mon Apr 3 16:49:03.589 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:03.589 <CWChannel: 0x7f9ba8529710> [channelNumber=60(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:03.589 <CWChannel: 0x7f9ba8529b30> [channelNumber=64(5GHz), channelWidth={40MHz(-1)}, DFS],
Mon Apr 3 16:49:03.589 <CWChannel: 0x7f9ba8529f50> [channelNumber=100(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:03.589 <CWChannel: 0x7f9ba8511e30> [channelNumber=104(5GHz), channelWidth={40MHz(-1)}, DFS],
Mon Apr 3 16:49:03.589 <CWChannel: 0x7f9ba850fd50> [channelNumber=108(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:03.589 <CWChannel: 0x7f9ba850ee50> [channelNumber=112(5GHz), channelWidth={40MHz(-1)}, DFS]
Mon Apr 3 16:49:03.589 )} took 0.9198 seconds, returned 0 results
Mon Apr 3 16:49:03.590 <kernel> IO80211ScanManager::startScan: Broadcast scan request received from 'airportd' (pid 54) ().
Mon Apr 3 16:49:03.590 <kernel> IO80211ScanManager::startScan: Initiating scan.
Mon Apr 3 16:49:04.512 <kernel> IO80211ScanManager::getScanResult: All scan results returned for 'airportd' (pid 54).
Mon Apr 3 16:49:04.512 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:04.512 <CWChannel: 0x7f9ba850f270> [channelNumber=116(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:04.512 <CWChannel: 0x7f9ba850dfe0> [channelNumber=120(5GHz), channelWidth={40MHz(-1)}, DFS],
Mon Apr 3 16:49:04.512 <CWChannel: 0x7f9ba850e400> [channelNumber=124(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:04.512 <CWChannel: 0x7f9ba8519cb0> [channelNumber=128(5GHz), channelWidth={40MHz(-1)}, DFS],
Mon Apr 3 16:49:04.513 <CWChannel: 0x7f9ba851a0d0> [channelNumber=132(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:04.513 <CWChannel: 0x7f9ba851a4f0> [channelNumber=136(5GHz), channelWidth={40MHz(-1)}, DFS]
Mon Apr 3 16:49:04.513 )} took 0.9229 seconds, returned 0 results
Mon Apr 3 16:49:04.513 Info: <Wi-Fi Menu Extra[289]> scan cache updated
Mon Apr 3 16:49:04.513 <kernel> IO80211ScanManager::startScan: Broadcast scan request received from 'airportd' (pid 54) ().
Mon Apr 3 16:49:04.513 <kernel> IO80211ScanManager::startScan: Initiating scan.
Mon Apr 3 16:49:04.790 <kernel> IO80211ScanManager::getScanResult: All scan results returned for 'airportd' (pid 54).
Mon Apr 3 16:49:04.790 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:04.790 <CWChannel: 0x7f9ba851a910> [channelNumber=140(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:04.790 <CWChannel: 0x7f9ba85123b0> [channelNumber=144(5GHz), channelWidth={40MHz(-1)}, DFS]
Mon Apr 3 16:49:04.790 )} took 0.2771 seconds, returned 0 results
Mon Apr 3 16:49:04.799 IPC: <airportd[54]> INVALIDATED XPC CLIENT CONNECTION [AutopanoGiga (pid=1017, euid=502, egid=20)]
Mon Apr 3 16:49:06.570 <kernel> IO80211ScanManager::startScan: Broadcast scan request received from 'airportd' (pid 54) ().
Mon Apr 3 16:49:06.570 <kernel> IO80211ScanManager::getScanResult: All scan results returned for 'airportd' (pid 54).
Mon Apr 3 16:49:11.244 IPC: <airportd[54]> ADDED XPC CLIENT CONNECTION [AutopanoGiga (pid=1017, euid=502, egid=20)]
Mon Apr 3 16:49:11.245 Info: <airportd[54]> SCAN request received from pid 1017 (AutopanoGiga) with priority 0
Mon Apr 3 16:49:11.246 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 1 does not require a live scan
Mon Apr 3 16:49:11.246 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 2 does not require a live scan
Mon Apr 3 16:49:11.246 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 3 does not require a live scan
Mon Apr 3 16:49:11.246 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 4 does not require a live scan
Mon Apr 3 16:49:11.246 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 5 does not require a live scan
Mon Apr 3 16:49:11.246 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 6 does not require a live scan
Mon Apr 3 16:49:11.246 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga does not require a live scan
Mon Apr 3 16:49:11.246 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:11.246 <CWChannel: 0x7f9ba890fa00> [channelNumber=1(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.246 <CWChannel: 0x7f9ba8912810> [channelNumber=2(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.246 <CWChannel: 0x7f9ba890fa60> [channelNumber=3(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.246 <CWChannel: 0x7f9ba8912800> [channelNumber=4(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.246 <CWChannel: 0x7f9ba890fea0> [channelNumber=5(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.246 <CWChannel: 0x7f9ba8916fe0> [channelNumber=6(2GHz), channelWidth={20MHz}, active]
Mon Apr 3 16:49:11.246 )} took 0.0004 seconds, returned 2 results
Mon Apr 3 16:49:11.246 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 7 does not require a live scan
Mon Apr 3 16:49:11.246 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 8 does not require a live scan
Mon Apr 3 16:49:11.246 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 9 does not require a live scan
Mon Apr 3 16:49:11.246 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 10 does not require a live scan
Mon Apr 3 16:49:11.246 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 11 does not require a live scan
Mon Apr 3 16:49:11.246 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 36 does not require a live scan
Mon Apr 3 16:49:11.246 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga does not require a live scan
Mon Apr 3 16:49:11.246 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:11.246 <CWChannel: 0x7f9ba89034d0> [channelNumber=7(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.246 <CWChannel: 0x7f9ba89035a0> [channelNumber=8(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.246 <CWChannel: 0x7f9ba8916590> [channelNumber=9(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.246 <CWChannel: 0x7f9ba8918220> [channelNumber=10(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.246 <CWChannel: 0x7f9ba890eab0> [channelNumber=11(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.247 <CWChannel: 0x7f9ba891ba00> [channelNumber=36(5GHz), channelWidth={40MHz(+1)}, active]
Mon Apr 3 16:49:11.247 )} took 0.0002 seconds, returned 0 results
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 40 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 44 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 48 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 149 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 153 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 157 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga does not require a live scan
Mon Apr 3 16:49:11.247 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:11.247 <CWChannel: 0x7f9ba891be20> [channelNumber=40(5GHz), channelWidth={40MHz(-1)}, active],
Mon Apr 3 16:49:11.247 <CWChannel: 0x7f9ba8910220> [channelNumber=44(5GHz), channelWidth={40MHz(+1)}, active],
Mon Apr 3 16:49:11.247 <CWChannel: 0x7f9ba8910640> [channelNumber=48(5GHz), channelWidth={40MHz(-1)}, active],
Mon Apr 3 16:49:11.247 <CWChannel: 0x7f9ba8927d90> [channelNumber=149(5GHz), channelWidth={80MHz}, active],
Mon Apr 3 16:49:11.247 <CWChannel: 0x7f9ba89281b0> [channelNumber=153(5GHz), channelWidth={80MHz}, active],
Mon Apr 3 16:49:11.247 <CWChannel: 0x7f9ba89285d0> [channelNumber=157(5GHz), channelWidth={80MHz}, active]
Mon Apr 3 16:49:11.247 )} took 0.0003 seconds, returned 1 results
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 161 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 165 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 12 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 13 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 52 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 56 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga does not require a live scan
Mon Apr 3 16:49:11.247 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:11.247 <CWChannel: 0x7f9ba89289f0> [channelNumber=161(5GHz), channelWidth={80MHz}, active],
Mon Apr 3 16:49:11.247 <CWChannel: 0x7f9ba8928e10> [channelNumber=165(5GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.247 <CWChannel: 0x7f9ba890eba0> [channelNumber=12(2GHz), channelWidth={20MHz}],
Mon Apr 3 16:49:11.247 <CWChannel: 0x7f9ba891b8a0> [channelNumber=13(2GHz), channelWidth={20MHz}],
Mon Apr 3 16:49:11.247 <CWChannel: 0x7f9ba8910a60> [channelNumber=52(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:11.247 <CWChannel: 0x7f9ba8910f50> [channelNumber=56(5GHz), channelWidth={40MHz(-1)}, DFS]
Mon Apr 3 16:49:11.247 )} took 0.0002 seconds, returned 0 results
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 60 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 64 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 100 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 104 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 108 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 112 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga does not require a live scan
Mon Apr 3 16:49:11.247 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:11.247 <CWChannel: 0x7f9ba89241b0> [channelNumber=60(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:11.247 <CWChannel: 0x7f9ba89245d0> [channelNumber=64(5GHz), channelWidth={40MHz(-1)}, DFS],
Mon Apr 3 16:49:11.247 <CWChannel: 0x7f9ba89249f0> [channelNumber=100(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:11.248 <CWChannel: 0x7f9ba8924e10> [channelNumber=104(5GHz), channelWidth={40MHz(-1)}, DFS],
Mon Apr 3 16:49:11.248 <CWChannel: 0x7f9ba8910d20> [channelNumber=108(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:11.248 <CWChannel: 0x7f9ba8925720> [channelNumber=112(5GHz), channelWidth={40MHz(-1)}, DFS]
Mon Apr 3 16:49:11.248 )} took 0.0002 seconds, returned 0 results
Mon Apr 3 16:49:11.248 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 116 does not require a live scan
Mon Apr 3 16:49:11.248 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 120 does not require a live scan
Mon Apr 3 16:49:11.248 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 124 does not require a live scan
Mon Apr 3 16:49:11.248 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 128 does not require a live scan
Mon Apr 3 16:49:11.248 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 132 does not require a live scan
Mon Apr 3 16:49:11.248 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 136 does not require a live scan
Mon Apr 3 16:49:11.248 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga does not require a live scan
Mon Apr 3 16:49:11.248 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:11.248 <CWChannel: 0x7f9ba8925b40> [channelNumber=116(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:11.248 <CWChannel: 0x7f9ba8925f60> [channelNumber=120(5GHz), channelWidth={40MHz(-1)}, DFS],
Mon Apr 3 16:49:11.248 <CWChannel: 0x7f9ba8926380> [channelNumber=124(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:11.248 <CWChannel: 0x7f9ba89267a0> [channelNumber=128(5GHz), channelWidth={40MHz(-1)}, DFS],
Mon Apr 3 16:49:11.248 <CWChannel: 0x7f9ba8926bc0> [channelNumber=132(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:11.248 <CWChannel: 0x7f9ba8926fe0> [channelNumber=136(5GHz), channelWidth={40MHz(-1)}, DFS]
Mon Apr 3 16:49:11.248 )} took 0.0002 seconds, returned 0 results
Mon Apr 3 16:49:11.248 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 140 does not require a live scan
Mon Apr 3 16:49:11.248 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 144 does not require a live scan
Mon Apr 3 16:49:11.248 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga does not require a live scan
Mon Apr 3 16:49:11.248 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:11.248 <CWChannel: 0x7f9ba8927400> [channelNumber=140(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:11.248 <CWChannel: 0x7f9ba8925390> [channelNumber=144(5GHz), channelWidth={40MHz(-1)}, DFS]
Mon Apr 3 16:49:11.248 )} took 0.0001 seconds, returned 0 results
Mon Apr 3 16:49:11.256 IPC: <airportd[54]> INVALIDATED XPC CLIENT CONNECTION [AutopanoGiga (pid=1017, euid=502, egid=20)]
Mon Apr 3 16:49:11.276 IPC: <airportd[54]> ADDED XPC CLIENT CONNECTION [AutopanoGiga (pid=1017, euid=502, egid=20)]
Mon Apr 3 16:49:11.276 Info: <airportd[54]> SCAN request received from pid 1017 (AutopanoGiga) with priority 0
Mon Apr 3 16:49:11.277 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 1 does not require a live scan
Mon Apr 3 16:49:11.277 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 2 does not require a live scan
Mon Apr 3 16:49:11.277 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 3 does not require a live scan
Mon Apr 3 16:49:11.277 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 4 does not require a live scan
Mon Apr 3 16:49:11.277 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 5 does not require a live scan
Mon Apr 3 16:49:11.277 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 6 does not require a live scan
Mon Apr 3 16:49:11.277 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga does not require a live scan
Mon Apr 3 16:49:11.277 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:11.277 <CWChannel: 0x7f9babe22710> [channelNumber=1(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.277 <CWChannel: 0x7f9babe07cb0> [channelNumber=2(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.277 <CWChannel: 0x7f9babe1bf20> [channelNumber=3(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.277 <CWChannel: 0x7f9babe07ca0> [channelNumber=4(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.277 <CWChannel: 0x7f9babe00690> [channelNumber=5(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.277 <CWChannel: 0x7f9babe0daf0> [channelNumber=6(2GHz), channelWidth={20MHz}, active]
Mon Apr 3 16:49:11.277 )} took 0.0003 seconds, returned 2 results
Mon Apr 3 16:49:11.277 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 7 does not require a live scan
Mon Apr 3 16:49:11.277 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 8 does not require a live scan
Mon Apr 3 16:49:11.277 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 9 does not require a live scan
Mon Apr 3 16:49:11.277 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 10 does not require a live scan
Mon Apr 3 16:49:11.277 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 11 does not require a live scan
Mon Apr 3 16:49:11.277 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 36 does not require a live scan
Mon Apr 3 16:49:11.277 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga does not require a live scan
Mon Apr 3 16:49:11.277 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:11.277 <CWChannel: 0x7f9babe0e1a0> [channelNumber=7(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.277 <CWChannel: 0x7f9babe22050> [channelNumber=8(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.277 <CWChannel: 0x7f9babe1dc50> [channelNumber=9(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.277 <CWChannel: 0x7f9babe19080> [channelNumber=10(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.277 <CWChannel: 0x7f9babe16d80> [channelNumber=11(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.277 <CWChannel: 0x7f9babe30630> [channelNumber=36(5GHz), channelWidth={40MHz(+1)}, active]
Mon Apr 3 16:49:11.277 )} took 0.0002 seconds, returned 0 results
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 40 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 44 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 48 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 149 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 153 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 157 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga does not require a live scan
Mon Apr 3 16:49:11.278 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe0c660> [channelNumber=40(5GHz), channelWidth={40MHz(-1)}, active],
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe2c1f0> [channelNumber=44(5GHz), channelWidth={40MHz(+1)}, active],
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe2c370> [channelNumber=48(5GHz), channelWidth={40MHz(-1)}, active],
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe1c360> [channelNumber=149(5GHz), channelWidth={80MHz}, active],
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe25140> [channelNumber=153(5GHz), channelWidth={80MHz}, active],
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe0acc0> [channelNumber=157(5GHz), channelWidth={80MHz}, active]
Mon Apr 3 16:49:11.278 )} took 0.0002 seconds, returned 1 results
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 161 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 165 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 12 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 13 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 52 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 56 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga does not require a live scan
Mon Apr 3 16:49:11.278 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe07140> [channelNumber=161(5GHz), channelWidth={80MHz}, active],
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe30cb0> [channelNumber=165(5GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe29350> [channelNumber=12(2GHz), channelWidth={20MHz}],
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe06d10> [channelNumber=13(2GHz), channelWidth={20MHz}],
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe31430> [channelNumber=52(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe08830> [channelNumber=56(5GHz), channelWidth={40MHz(-1)}, DFS]
Mon Apr 3 16:49:11.278 )} took 0.0002 seconds, returned 0 results
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 60 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 64 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 100 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 104 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 108 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 112 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga does not require a live scan
Mon Apr 3 16:49:11.278 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe2afd0> [channelNumber=60(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe1dfb0> [channelNumber=64(5GHz), channelWidth={40MHz(-1)}, DFS],
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe29500> [channelNumber=100(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe0b4d0> [channelNumber=104(5GHz), channelWidth={40MHz(-1)}, DFS],
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe2eb80> [channelNumber=108(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe296a0> [channelNumber=112(5GHz), channelWidth={40MHz(-1)}, DFS]
Mon Apr 3 16:49:11.278 )} took 0.0002 seconds, returned 0 results
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 116 does not require a live scan
Mon Apr 3 16:49:11.279 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 120 does not require a live scan
Mon Apr 3 16:49:11.279 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 124 does not require a live scan
Mon Apr 3 16:49:11.279 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 128 does not require a live scan
Mon Apr 3 16:49:11.279 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 132 does not require a live scan
Mon Apr 3 16:49:11.279 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 136 does not require a live scan
Mon Apr 3 16:49:11.279 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga does not require a live scan
Mon Apr 3 16:49:11.279 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:11.279 <CWChannel: 0x7f9babe0b750> [channelNumber=116(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:11.279 <CWChannel: 0x7f9babe15ef0> [channelNumber=120(5GHz), channelWidth={40MHz(-1)}, DFS],
Mon Apr 3 16:49:11.279 <CWChannel: 0x7f9babe0d2d0> [channelNumber=124(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:11.279 <CWChannel: 0x7f9babe07770> [channelNumber=128(5GHz), channelWidth={40MHz(-1)}, DFS],
Mon Apr 3 16:49:11.279 <CWChannel: 0x7f9babe1a9d0> [channelNumber=132(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:11.279 <CWChannel: 0x7f9babe2f5f0> [channelNumber=136(5GHz), channelWidth={40MHz(-1)}, DFS]
Mon Apr 3 16:49:11.279 )} took 0.0002 seconds, returned 0 results
Mon Apr 3 16:49:11.279 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 140 does not require a live scan
Mon Apr 3 16:49:11.279 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 144 does not require a live scan
Mon Apr 3 16:49:11.279 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga does not require a live scan
Mon Apr 3 16:49:11.279 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:11.279 <CWChannel: 0x7f9babe20790> [channelNumber=140(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:11.279 <CWChannel: 0x7f9babe2ffb0> [channelNumber=144(5GHz), channelWidth={40MHz(-1)}, DFS]
Mon Apr 3 16:49:11.279 )} took 0.0001 seconds, returned 0 results
Mon Apr 3 16:49:11.287 IPC: <airportd[54]> INVALIDATED XPC CLIENT CONNECTION [AutopanoGiga (pid=1017, euid=502, egid=20)]

Anachronism

The anachronism of using wood to create a case for a technological item, is perhaps blunted by the use of kevlar in the laminate. It provides scratch protection when placing the phone up or down on a flat surface, especially for the camera lens. A big plus is the minimalist logo on the back – too many cases have the casemaker’s name in huge letters.

While the packaging states it’s for the iPhone 5/5s, it’s also fine with the SE.

Apple Keynote Frustrations

Apple’s Keynote is an app that I’ve enjoyed using for years. It brings a lot of power and polish for a low effort, and reminds me of the thrill I  had when first using Macromedia’s Director 8, upon discovering how much of the app’s abilities were available without using any form of scripting language.

Yesterday, however I discovered a coupe of really serious gotchas that reveal some major limitations with the current software.

Presenter View

Presenter view is an option, which on a multiple display system, allows one screen to show the current slide, and the other screen to show the speaker’s notes, a timer, and the current slide.

A problem surfaces when you want to use your iPad to show your presenter notes, while the presentation itself is being run off a different device. For example, consider a Pecha-Kucha presentation, where you have 20 seconds per slide, 20 slides, auto advancing, and the slides are being run off a central slidedeck on a laptop.

Keynote for iPad won’t show presenter view unless an external display is connected.

Even if you bring along an AppleTV, and set up screen mirroring to it, unless that AppleTV is plugged into a display or projector, you’re out of luck. I’ve heard tell that you can set up Keynote on the iPad to be a remote for keynote on an iPhone, running the presentation on your phone, but that’s still a workaround.

Keynote for iPad needs an update to allow Presenter View to run, without an external display connected – if for no other reason than to allow you to practice your talk.

Mac and iPad

With the launch of iCloud-ified versions of Keynote for Mac and iPad, a lot of features were shed, towards the goal of creating documents that are equally at home in either Mac or iPad. Great, I can get on board with this. The only problem is that it isn’t a complete process, and yesterday, while doing the techtest for a presentation I was going to give, I was bitten HARD by this.

slideshow_4So here is the workspace UI for Keynote for Mac. What’s important to note is that palette on the right, with 3 tabs:

  • Build In
  • Action
  • Build Out

The way it works is that when a slide loads, the Build In settings are run to create the slide, then the Action settings, then Build Out, and finally the Transition effect when leaving the slide itself.

In order to get around the problem above of not having Presenter View available, I created a new slideshow, with a goal of it running in time to the Pecha-Kucha slidedeck, that was essentially what you see in Presenter View.

slideshow_1Since you only have 20 seconds per slide, I wanted a countdown timer for each slide, but rather than using numbers, which are visually distracting, I decided a simple graphical solution would be better. Thus, a blue bar across the top of the slide, and next to the bullet points, which disappears off screen to the right in the former, and downwards past the various bullet points in the latter. This was done with an Action, known as Move, which allows you to set the endpoint and duration of the movement.

Then, with the slide set to auto transition after zero delay, you have a 20 second presenter slide, with time remaining indicator, that then goes immediately to the next slide. Fantastic! Or, so I thought.

When I arrived at the event and did the tech rehearsal, what I discovered is that Powerpoint running on a Mac has a different idea about what 20 seconds is, to Keynote on an iPad, and I had tested my stack against my iPhone’s stopwatch. With Powerpoint set to 20 seconds and no transition time, the iPad about 5 seconds behind by the end of my last slide.

So, no problems, I’ll just edit each of my slides to remove 0.25 seconds from the Move action, that’ll compensate and I’ll be up to speed.

slideshow_3

Nope!

While Keynote for iPad knows that the Action stage of the build process exists, and will play the Action stage, it offers no way to create or edit an Action.

As you can see from the video linked on the left here, when you go to add a Build In or Out, you can see that there are actions on the object when you go to look at the Build Order, but there’s no option to adjust it.

A final gripe about the Mac version of Keynote, selecting an image, right clicking and choosing “Replace Image” brings up an iOS style image picker that only shows you the contents of your system’s photo library – in my case, Aperture. It locks you out of accessing your actual filesystem, where for example, you might have kept all the images you’re planning to use within a main project folder in ~/Documents.

This is a symptom of the overall problem I’ve found trying to use the iPad to get actual work done. If everything you do is in a single app, like say, drawing in Procreate, it’s fantastic. But, if your task is assembly, bringing together media from multiple sources, tweaking and adjusting etc, the fundamental nature of iOS – its inability to be file-centric, the way Finder makes a Mac, causes tasks that are mundane and easy, to be like trying to run, while up to your waist in water.

iCould Drive is not a solution – anyone who thinks that the way to move files between devices, is to send them through a server on the other side of the world needs to be sentenced to a year on dialup. iOS needs full peer networking with Macs. It needs the ability to access, and be accessed by filesharing with the same capabilities as the Mac. Finally, it needs to ditch this ridiculous notion that data and documents are contained within apps themselves. I should be able to delete an app, without losing anything I’ve done using that app.

When your Mac Refuses to Sleep.

The Symptoms:

You put your mac to seep, the screen(s) go black, but the machine doesn’t power down its drive(s) and sleep. Pressing a mouse button or keyboard key brings the screen(s) straight back up.

The problem persists through reboots, logouts, changing user accounts, deleting com.apple.PowerManagement.plist, and even doing a full SMC reset.

The Solution:

Go to the Printers & Scanners preference pane, and make sure you haven’t got a printer with a paused print queue, or a printer which isn’t actually connected any more, which you may have accidentally sent a job to, which the system is trying to find.

When iTunes Wi-Fi Sync Stops working.

Sometimes, the ability for iTunes to sync with your iPad, iPhone, or other iOS devices, will simply vanish, and nothing you do seems to solve the problem. The solution may be counter-intuitive, but comes back to the first rule of tech support:

“Did you try turning it off and on?”

There I was, working away, when I noticed the Wi-Fi indicator on my Mac’s menubar suddenly doing the searching for a signal animation. It found the basestation again, and all seemed fine – but then I noticed both my iOS devices had disappeared from iTunes. Odd, I thought, but not without precedent. Sometimes this happens, and switching the Mac’s Wi-Fi on and off will fix the problem.

Alas, this time it didn’t.

Plugging them in via USB and everything worked fine – both devices had the necessary check mark for Sync via Wi-Fi, but as soon as they were unplugged, nothing.

Going through the process of elimination of what worked:

  • The Mac still had network access to the internet via Wi-Fi.
  • The iOS devices still had access to the internet via Wi-Fi.
  • My fileserver / storage app on iOS could still be reached by the Mac.
  • Airdrop still worked between my Mac and iPad.

Most perplexing – in all respects, all the devices seemed to be able to do everything over Wi-Fi except see each other for iTunes Wi-Fi sync.

Here’s the list of the things I tried:

  • Complete shutdown / restart of Mac and all iOS devices.
  • Switching all devices from DHCP to fixed IP addresses.
  • Running the latest Yosemite security patch, and updating iTunes to the latest version (total shot in the dark).
  • Sacrificing a goat.
  • Restoring iTunes .itl files to versions prior to the problem manifesting.

After wasting about 3 hours on trying to solve this, eventually, in desperation, I rebooted the modem, which is also the Wi-Fi basestation.

Bingo! Problem solved.

So, it seems that somehow, part of the modem’s software which allows for service discovery specific to iTunes Wi-Fi sync had failed. This failure only effected those specific functions, allowing everything else on Wi-Fi to continue working, which threw suspicion over on to the Mac where iTunes was running.

Be careful what you wish for…

There’s an idea spreading around the Mac-using world at the moment that Apple should abandon iTunes, and start again from scratch with separate apps handling its various abilities.

There’s one problem with this which gives me pause.

Every change Apple has made to iTunes since version 10, has made the product worse. What has made it worse, is not the overloading of features, but the mindset behind the design of the new features.

UI elements no longer have tooltips. Podcasts have been screwed up, reoriented around streaming and breaking functionality for the download-and-keep model. Lets not forget the disastrous iTunes 11.2 “upgrade” which introduced a new “saved” podcasts feature, which allowed you to protect individual episodes from auto-deletion – and which the upgrade process told you would be applied to ALL of your previously downloaded podcast episodes. That function was faulty, and since iTunes had auto delete after listening defaulted to on, upto half the episodes in many of my stored podcasts disappeared in an instant. Not in the trash, no undo, just gone.

Can’t you just re-download them?

That presumes two things, firstly that bandwidth is free and uncapped, and secondly, that all podcasts keep every episode in their feed forever. Many don’t. Some of my subscriptions have gone offline entirely. The point is, user data is sacrosanct, and deleting it without an explicit command from a user, with an “are you sure” dialog is the greatest sin a piece of software can commit.

This is a symptom of a part of the larger problem Apple has, those who are in charge of the direction of its products are possessed of such immense bandwidth privilege, they seem incapable of designing products for an offline reality. The sheer insanity of using a server on one side of the world, to move a document between two devices a foot apart, or that two devices which can be physically cabled together, can’t share calendar reminders without an internet connection, is hard for me to wrap my head around.

So, given that all the things which are bad about iTunes, are post-version-10 changes to the product, what makes anyone think that an all-new music solution would be anything other than a reflection (and likely a magnification) of the philosophy which created all these ruinous changes?

What’s wrong with iTunes, are the new parts of iTunes, not the presence of what is increasingly becoming “legacy” functionality.

The New Apple Paradigm

It’s time for a bit of recreational Kremlinology regarding Apple’s strategies.

When Intel and Apple brought the Thunderbolt interface into the world, there were a lot of interesting possibilities created. Thunderbolt being essentially the PCI bus on a wire, many peripheral solutions that were previously done with internal cards, could now be created as breakout boxes, which could serve both desktop and laptop users.

Since Thunderbolt is capable of carrying all of the other peripheral busses, one great solution it enabled was Apple’s Thunderbolt display, which could act as a peripheral hub for a laptop. You plug power into the display, and then the display has an upstream cable which branches into thunderbolt, and Magsafe power for the laptop. So with that one cable, your laptop effectively becomes a desktop (and your laptop’s power adapter stays in your travel bag).

My 68 year old mother, who is an accountant, uses this solution. She has a light, compact, 13″ Macbook Air, with which she travels interstate every quarter to work with clients. In her home office she has the big display, keyboard, mouse etc. On the road, the system is light & compact, at home it has screen space for her MYOB Windows VMs, remote desktop sessions with client computers etc.

The new Macbook isn’t set up to do his. It’s only external display options are HDMI and VGA, and with no Thunderbolt due to its sole USB3-C port, arguably, it never will.

It remains to be seen whether this is a repeat of the goof that was the original 13″ Aluminium Macbook (which dropped the firewire of its polycarbonate incarnation, only to regain it in the next revision), or whether this is a new paradigm of less versatile Macs, which have a narrower but deeper usability. By forgoing all the ports that make a laptop able to be both a portable, and desktop, Apple have made a computer that is arguably better when it’s being a portable.

The question is whether this will make its way into the rest of the laptop lineup. If so, I think we can probably say that the paradigm that Apple is heading towards, is this: People who need both desktop and laptop usage scenarios, should be buying a desktop and a laptop, and then using Continuity to move their work state between devices. The net result of more device sales for Apple is obviously just a happy coincidence.

Rotating a .NEF Raw File

One of the problems I’ve had using Apple’s (now end-of-lifed) Aperture photography software, is that it doesn’t make changes to an original RAW file. Everything changed within it is done using versions – essentially metadata – so that you can have a dozen different variants of a file, but only ever have one taking up space on disk.

It’s a great idea, except when your original has a problem, like for example the camera has recorded orientation information that you don’t want applied. Aperture provides no way to alter the RAW file. You can create a rotated version in Aperture, but exporting the RAW will output the original un-rotated edition.

The solution is to use Nikon’s own ViewNX software. It’s ugly as sin, not at all Mac-like, but when you rotate a RAW file in it, the file on disk is rotated, while staying as a RAW.

Then, you have to reimport the image as a new file, and delete the old version. Simply replacing the old one with the rotated version in Aperture’s library won’t show up as having been changed when you re-launch Aperture.

iOS 8 Photos app – DSLR Fail.

With the update to iOS 8, Apple obsolesced the iOS version of iPhoto. Notwithstanding that iPhoto was a paid product, which is made unusable without warning, the replacement has certain issues.

The replacement for iPhoto is an expanded set of capabilities for the Photos app. What it doesn’t have, however, is the ability to view EXIF data for the images, so if you’re using the iPad to triage images in the field, you can’t see any of the technical details of your shots – no aperture, iso, shutter speed or anything. Worse still, when you try to edit images…

Photos can’t perform more than a single edit on an image without it pixelating like this.

These add to the commonly held view that things at Apple are starting to go off the rails, at a systemic, company-wide level. Within Apple’s software efforts, new features are being brought to market before they’re thoroughly ready. More importantly, old working solutions are removed from users’ systems before their replacements are up to the task.

Recent iPhones

So my current phone, an iPhone 3GS which I bought outright in 2009, has been getting a little long in the tooth. I’ve been thinking about options for replacement, and had pondered trying to get an old stock iPhone 5S through a 3rd party retailer, since they’re still available in a 64gb version. The iPhone 5S models Apple sells since the iPhone 6 release, are 16 & 32gb only.

So, I went to the Apple store to check out the feel of the current lineup. In short, neither of them are particularly nice.

The iPhone 5S feels cheap and hollow. It’s too light for its apparent volume. While the rectangular design is pretty, it’s an unpleasant object to hold in your hand.

The iPhone 6 is a completely different experience. It’s heavier, having what feels like the correct weight for its size, or rather, the correct feeling of density for its size. The screen is tremendous, and looks more real and less like a screen than the 5s, I suspect because the panel is closer to the surface of the glass. While the curved back and front edges feel fantastic in the hands, the simple fact is that the phone is too big. In order to hold it in a way that’s comfortable for reaching the home button, so much of the phone cantilevers out over the top of your hand, that you never feel it’s safe unless you’re gripping onto it. Contrast that with my 3GS:

image Here I can sit the phone in my hand, and use it without any need to physically hold it in place, the weight and shape of the phone keep it in place.

Added to this, the glassy-smooth surface of the iPhone 6 simply feels too slippery. Combined with the projecting into space cantilever, every second of holding it resulted in buttock-clenching terror.

The only thing I’ve held that felt less secure in my hand, was a live, wriggling fish.

Now, I could, and probably would, get a leather or silicone skin if I was going to buy this phone. That would alleviate the slipperiness, and ensure that the camera lens wasn’t projecting out into space from the back of the phone – which is another mark against the iPhone 6. However, it would make the phone even bigger.

So, I think I’m going to sit out this round of phones, yet again, and stay with my 3GS. Perhaps when Apple makes a device with an iPhone 5S (or smaller) sized screen, in an iPhone 6 denisity and shape, and gives it 64gb of storage, I’ll look into buying again.

If this article was of use, a donation would help support my projects.