<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Curiously Nerdy &#187; Bleeding Edge</title>
	<atom:link href="http://blogs.6bit.com/josh/category/technology/bleeding-edge/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.6bit.com/josh</link>
	<description>The Original</description>
	<lastBuildDate>Fri, 02 Jul 2010 17:58:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Opera Mini on the iPhone, for now</title>
		<link>http://blogs.6bit.com/josh/2010/04/opera-mini-on-the-iphone-for-now/</link>
		<comments>http://blogs.6bit.com/josh/2010/04/opera-mini-on-the-iphone-for-now/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 17:58:09 +0000</pubDate>
		<dc:creator>Josh Perry</dc:creator>
				<category><![CDATA[Bleeding Edge]]></category>
		<category><![CDATA[Editorial]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Opera]]></category>

		<guid isPermaLink="false">http://blogs.6bit.com/josh/?p=269</guid>
		<description><![CDATA[So, today(2010-04-13) it was announced that Opera Mini for the iPhone had been accepted by Apple and in deed it was revealed in the Appstore within a few hours. Many have written on the loophole that Opera used to make this happen; Opera mini isn&#8217;t technically a browser, it can probably be more accurately described [...]]]></description>
			<content:encoded><![CDATA[<p>So, today(2010-04-13) it was <a href="http://www.opera.com/press/releases/2010/04/13/">announced</a> that Opera Mini for the iPhone had been accepted by Apple and in deed it was revealed in the <a href="http://itunes.apple.com/app/opera-mini-web-browser/id363729560?mt=8">Appstore</a> within a few hours.</p>
<p>Many have written on the loophole that Opera used to make this happen; Opera mini isn&#8217;t technically a browser, it can probably be more accurately described as a remote image viewer. The browser sends out a request for a URI to the Opera proxy servers who then pull down the requested page, and let Javascript run for up to 2 seconds to build out any Web 2.0 goodness on the page. The server then renders the resultant HTML (I assume, judging by the rendering discontinuities, with their very own layout engine) to an image which is then sent back to your mobile device as a pixelated rendition of the web page you asked for.</p>
<div id="attachment_272" class="wp-caption alignnone" style="width: 330px"><a href="http://blogs.6bit.com/josh/wp-content/uploads/2010/04/opera.png"><img src="http://blogs.6bit.com/josh/wp-content/uploads/2010/04/opera.png" alt="" title="Questionable Recursion" width="320" height="479" class="size-full wp-image-272" /></a><p class="wp-caption-text">Questionable Recursion</p></div>
<p>More, however than an image is returned, data about active regions on the page are also sent back allowing you to when you touch links, or even &#8220;interact&#8221; with Javascript powered widget. Touch one of these active elements and the server again clatters into action, churning and whirring to grab HTML, execute script, and render a sepia image of the website for view through its dirty little port hole.</p>
<p>This does mean that even though you don&#8217;t get any nice sliding or swooshing Javascript animations they are replaced with a faithful approximation of the animation&#8217;s final state. This can, understandably, cause sites to have a jumpy and jarring, if fast, feel. However, touch a Javascript widget in Safari and you&#8217;re greeted with a nice slide or fade, not by a URL bar as your browser does, yet another, web request to have a server run the script only to show you the final frame of the animation.</p>
<p>Unfortunately, the last awards that this yesterday-tech browser received were before the epoch of Safari on the iPhone. Compared to the sorry state of the browser on my BlackBerry, yes, this is a nice change; but it just doesn&#8217;t deliver the experience that people expect on contemporary devices, let alone a Safari commensurate experience that is already present on the iPhone. </p>
<p>Now this is all fine and good, if this web experience speaks to you; but is this just Steve having fun with Opera? Something akin to the <a href="http://daringfireball.net/2010/04/iphone_agreement_bans_flash_compiler">poison pill</a> that he force fed Adobe and others in the as-yet-to-be-released iPhone OS 4 developer agreement?</p>
<p>The thing is, Opera, like any good software developer, likes to make maximum reuse of it&#8217;s code. Case in point, their Android version of Opera mini, instead of rewriting their software to work with the OS, they rewrote the OS; they went as far as implementing a J2ME translation layer for Android to allow their browser to run unmodified.</p>
<p>Now, it is difficult to tell if Opera Mini on the iPhone is using native widgets, they all have a kind of an <a href="http://en.wikipedia.org/wiki/Uncanny_valley">uncanny valley</a> look to them, but there is more explicit evidence as well.  For one, try doing a copy and paste operation, this is definitely not the native iPhone OS cut and paste experience. This duality of experience is exactly what Apple is attempting to quash with their new developer agreement.</p>
<div id="attachment_278" class="wp-caption alignnone" style="width: 330px"><a href="http://blogs.6bit.com/josh/wp-content/uploads/2010/04/opera-cnp.png"><img src="http://blogs.6bit.com/josh/wp-content/uploads/2010/04/opera-cnp.png" alt="" title="Opera Cut and Paste" width="320" height="482" class="size-full wp-image-278" /></a><p class="wp-caption-text">Cut and Paste</p></div>
<p>Are you; a user of the original iPhone with only Edge connectivity (or running the 3G variants hacked on T-Mobile, ahem); into a jolting, pixelated web experience; or an Opera fan-person? Don&#8217;t mind that this experience may end abruptly when you upgrade your iPhone to OS4? Then this may be the browser for you.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.6bit.com/josh/2010/04/opera-mini-on-the-iphone-for-now/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sharing Media Outside Your User Profile on Windows 7 Media Player 12</title>
		<link>http://blogs.6bit.com/josh/2009/05/sharing-media-outside-your-user-profile-on-windows-7-media-player-12/</link>
		<comments>http://blogs.6bit.com/josh/2009/05/sharing-media-outside-your-user-profile-on-windows-7-media-player-12/#comments</comments>
		<pubDate>Fri, 15 May 2009 17:17:53 +0000</pubDate>
		<dc:creator>Josh Perry</dc:creator>
				<category><![CDATA[Bleeding Edge]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Media]]></category>
		<category><![CDATA[Sharing]]></category>
		<category><![CDATA[Win7]]></category>
		<category><![CDATA[Windows 7]]></category>

		<guid isPermaLink="false">http://blogs.6bit.com/josh/?p=80</guid>
		<description><![CDATA[Windows 7 has taken Vista&#8217;s media sharing and streaming capabilities and really put the shine on them, take a look at this post for some great in-depth coverage. Reading about these new features I was excited to give them a try. Like a lot of people who have large media libraries I don&#8217;t keep all [...]]]></description>
			<content:encoded><![CDATA[<p>Windows 7 has taken Vista&#8217;s media sharing and streaming capabilities and really put the shine on them, take a look at <a href="http://blogs.msdn.com/e7/archive/2009/05/12/media-streaming-with-windows-7.aspx">this post</a> for some great in-depth coverage.</p>
<p>Reading about these new features I was excited to give them a try. Like a lot of people who have large media libraries I don&#8217;t keep all of my media under my user profile directories (My Pictures, My Music, My Videos), I instead keep them on a large partition on a different (larger) hard drive.</p>
<p>After enabling streaming for network devices in WMP 12 I right-clicked on the Videos library to select <em><strong>Manage Videos library</strong></em> and simply added my <em><strong>D:\Video</strong></em> folder. Then pulling up the media server on the PS3 I am able to see the couple of sample videos in the <em><strong>My Videos</strong></em> folder but nothing from <em><strong>D:\Video</strong></em>.</p>
<div id="attachment_81" class="wp-caption alignnone" style="width: 542px"><a href="http://blogs.6bit.com/josh/wp-content/uploads/2009/05/vidlib.png"><img src="http://blogs.6bit.com/josh/wp-content/uploads/2009/05/vidlib.png" alt="Video Library Folders" title="Video Library" width="532" height="482" class="size-full wp-image-81" /></a><p class="wp-caption-text">Video Library Folders</p></div>
<p>I thought that the problem was that WMP or the PS3 were not refreshing the list of available files, so after messing around with trying to refresh the data for a bit I was not getting any further along. As an aside, I&#8217;ve found that WMP does take it&#8217;s sweet time to refresh the media list, and easy way to force this is to go into the Service control panel and restart the <em><strong>Windows Media Player Network Sharing Service</strong></em> this seems to force a refresh of the media that is shown to players.</p>
<p>Well, if it isn&#8217;t a refreshing issue it must be a rights issue, looking at the security rights on the <em><strong>My Videos</strong></em> folder I did find one difference from my <em><strong>D:\Video</strong></em> folder. The difference was one group named <em><strong>Home Users</strong></em> that had rights to <em><strong>My Videos</strong></em>. To give the group rights, right click on <em><strong>D:\Video</strong></em> folder, choose properties, select the security tab, and choose the edit button. Click the add button and add the <em><strong>Home Users</strong></em> group, the rights default to read/execute with will work just fine so click OK to save the changes.</p>
<div id="attachment_89" class="wp-caption alignnone" style="width: 387px"><a href="http://blogs.6bit.com/josh/wp-content/uploads/2009/05/vidlibperms.png"><img src="http://blogs.6bit.com/josh/wp-content/uploads/2009/05/vidlibperms.png" alt="Video Folder Permissions" title="Video Folder Permissions" width="377" height="456" class="size-full wp-image-89" /></a><p class="wp-caption-text">Video Folder Permissions</p></div>
<p>After setting the rights on the directory and restarted the <em><strong>Windows Media Player Network Sharing Service</strong></em> I pulled up the videos folder on the PS3 and the shared videos in the <em><strong>D:\Video</strong></em> were immediately playable.</p>
<p>The new streaming and sharing features in Windows 7 are really above and beyond the ones in Vista, I&#8217;m hoping that in a future update that the PS3 and XBox360 will get updates to support the new <em><strong>Play To</strong></em> feature in Windows 7.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.6bit.com/josh/2009/05/sharing-media-outside-your-user-profile-on-windows-7-media-player-12/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Qualcomm Gobi WWAN Card on Windows 7</title>
		<link>http://blogs.6bit.com/josh/2009/05/qualcomm-gobi-wwan-card-on-windows-7/</link>
		<comments>http://blogs.6bit.com/josh/2009/05/qualcomm-gobi-wwan-card-on-windows-7/#comments</comments>
		<pubDate>Wed, 06 May 2009 16:35:42 +0000</pubDate>
		<dc:creator>Josh Perry</dc:creator>
				<category><![CDATA[Bleeding Edge]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blogs.6bit.com/josh/?p=66</guid>
		<description><![CDATA[&#60;Update&#62; The latest 64-bit version of most vendor&#8217;s drivers now work fine without following these instructions or using GobiLoader. I updated my Thinkpad to Win7 Retail x64 using Lenovo System Update to install all the drivers and now my Gobi card works great even after a sleep/hibernate. &#60;/Update&#62; I have been surprised by the extremely [...]]]></description>
			<content:encoded><![CDATA[<p><strong>&lt;Update&gt;</strong></p>
<p>The latest 64-bit version of most vendor&#8217;s drivers now work fine without following these instructions or using GobiLoader. I updated my Thinkpad to Win7 Retail x64 using Lenovo System Update to install all the drivers and now my Gobi card works great even after a sleep/hibernate.</p>
<p><strong>&lt;/Update&gt;</strong></p>
<p>I have been surprised by the extremely small number of compromises that I&#8217;ve had to make after installing Windows 7.  One of the more painful for myself however is the problem with support for my laptop&#8217;s internal WWAN card which is based on the Qualcomm Gobi chipset.  It looks like this chipset is used on some HP laptops as well as my Lenovo Thinkpad (W500) and my Boss&#8217; X301 for both Verizon and/or AT&#038;T. This chipset is new from Qualcomm and is supposedly a global radio supporting any provider on both CDMA and GSM by using a dynamic firmware capability.</p>
<p>During the time of the Windows 7 beta and now the recent RC1 there have been some <a href="http://blogs.technet.com/teammb/archive/2009/01/08/list-of-mobile-broadband-devices-that-may-be-used-to-connect-to-the-internet-using-windows-7.aspx">rumblings</a> from people that need this support to be able to use Windows 7 full-time. Reading through the posts and trying to get this to work I&#8217;ve found there to be two blocking issues getting this card to work, the first is getting the drivers to install on Windows 7, and the second is getting the dynamic firmware to load onto the card.</p>
<h2>Installing the Drivers</h2>
<p>The problem with installing the drivers is caused by a library that Qualcomm uses to support the installation called difxapi. The supporting DLL for this API is included in the installation package and it conflicts with the Windows 7 version, this conflict causes a custom action in the installation routine to fail and forces a rollback of the installation.</p>
<p>To fix the problem we need only to replace this DLL with the one from your Windows 7 installation. If you don&#8217;t have it already you need to download the driver installation package from your laptop manufacturer&#8217;s support site and extract it somewhere.</p>
<p> Starting from where you unarchived your package look for a directory similar to &#8220;\Driver\Source\Module Retargetable Folder\QCUSB-Lenovo\DriverPackage\Microsoft\DIFxAPI&#8221;. Now you just need to replace the difxapi.dll here with the one from &#8220;c:\windows\system32\&#8221;. If you are running 64-bit Windows then copy the DLL into the amd64 subdirectory, for 32-bit installations copy the DLL into the x86 directory, if you&#8217;re not sure you can safely copy it into both directories.</p>
<p>Once you replace this DLL the setup.exe under the &#8220;Driver&#8221; directory should now run successfully. Once the installation finishes verify that you have the &#8220;QCUSB-*&#8221; and &#8220;QDLService&#8221; directories under &#8220;c:\QUALCOMM&#8221;.</p>
<h2>Loading the Firmware</h2>
<p>I&#8217;ve somewhat mimicked two Linux programs and wrote a tool called GobiLoader for Windows 7 that is able to successfully load firmware onto the card for any of the supported wireless providers (see More About the Firmware for more info).</p>
<p><a href='http://blogs.6bit.com/josh/wp-content/uploads/2009/05/gobiloader.zip'>Download GobiLoader</a></p>
<p>Since the Qualcomm service is not able to load the firmware properly we will need to disable it so that it doesn&#8217;t conflict with GobiLoader. Bring up the &#8220;Services&#8221; control panel and in the list of services find the one labeled &#8220;Qualcomm Gobi Download Service&#8221;. Double click the service to bring up the properties, if it is running click the stop button; to disable the service change the &#8220;Startup type&#8221; drop down to &#8220;Manual&#8221; and click &#8220;OK&#8221;.</p>
<p>Before you use GobiLoader you will need to verify that the proper firmware files will be loaded. To find the proper firmware files you can take a look at the Qualcomm Download Service log file on your Vista installation. The log file is called &#8220;QDLService.txt&#8221; and can be found under the &#8220;C:\Users\All Users\QUALCOMM\QDLService&#8221; directory. Open the log file and verify the path to the firmware files that it is loading, you will see something like this:</p>
<pre>
05/06/2009 03:50:47.938     20 70 72 6F 74 6F 63 6F 6C 20 74 67 74 04 00 F0
05/06/2009 03:50:47.938     CB 04 04 00 00 00 00 00 00 00 00 00 00 00 00 00
05/06/2009 03:50:47.938     30
05/06/2009 03:50:47.938 QDL sending image file: C:\QUALCOMM\QDLService\Packages\1\amss.mbn
05/06/2009 03:50:47.938 QDL protocol server request sent
05/06/2009 03:50:47.938   0002 [9 05/06/2009 03:50:47.938]
05/06/2009 03:50:47.938     25 05 68 48 4E 00 01 00 00 00 04 00 00
</pre>
<p>The number &#8217;1&#8242; in the firmware path (C:\QUALCOMM\QDLService\Packages\1\amss.mbn) in this case is the ID for the firmware that my Vista installation was successfully using. Your number may be different depending on who your wireless provider is (AT&#038;T, Verizon, Sprint).</p>
<p>Remembering the firmware number go back to Windows 7 and under the same &#8220;C:\Users\All Users\QUALCOMM\QDLService&#8221; directory open the &#8220;Options.txt&#8221; and verify that it is pointing at the correct firmware. After I installed the Qualcomm drivers on Windows 7 it was pointing at the wrong firmware so I had to manually correct the path. GobiLoader reads this file to load the correct firmware, so be sure it is correct or your card will not work. GobiLoader also assumes that the &#8220;Options.txt&#8221; file is located at &#8220;C:\Users\All Users\QUALCOMM\QDLService&#8221;; and it relies on the registry to detect which COM port that the QDLoader device is listening on.</p>
<p>Once you have everything in order you can simply run GobiLoader.exe and watch for a successful upload. Once the upload has happened you should see your WWAN modem become available.</p>
<p><b>You will need to run GobiLoader after any time that you shutdown, sleep, or hibernate your laptop.</b></p>
<h2>More About The Firmware</h2>
<p>Glancing at the firmware files I noticed that they had an ELF header, and running &#8216;file&#8217; on them evoked this: <code>amss.mbn: ELF 32-bit LSB executable, ARM, version 1 (ARM), statically linked, stripped</code></p>
<p>It seems that the Qualcomm Gobi chipset runs embedded Linux on an ARM processor, and the firmware files are simply executable programs. When the firmware files are uploaded they are being copied into RAM and then run just like any other Linux program. Since these programs are in RAM they are lost every time the card gets power-cycled (including during sleep or hibernate) and the card reverts to a blank slate.</p>
<p>In its blank state the card&#8217;s built-in firmware exports a single USB serial port device &#8212; called HS-USB QDLoader &#8212; to the operating system, this port is used solely for the upload of the firmware files to the card. You can think of this built-in functionality as something like a bootloader.</p>
<p>I find this design rather ingenious, since the running firmware programs are simply Linux executables they&#8217;ve opened up the pool of capable developers considerably. Qualcomm should be able to be quite agile in fixing bugs and adding features since the developers can write user-mode programs, where most firmware is either bare metal or kernel-mode code. As the power of embedded processors grows I expect to see solutions like this become more common.</p>
<p>Once the firmware has been loaded, the QDLoader device goes away and the modem&#8217;s other ports attach to the system; these devices appear in the Windows device manager.</p>
<div id="attachment_92" class="wp-caption alignnone" style="width: 559px"><a href="http://blogs.6bit.com/josh/wp-content/uploads/2009/05/gobidevs.png"><img src="http://blogs.6bit.com/josh/wp-content/uploads/2009/05/gobidevs.png" alt="Gobi Devices After Firmware Load" title="Gobi Devices" width="549" height="394" class="size-full wp-image-92" /></a><p class="wp-caption-text">Gobi Devices After Firmware Load</p></div>
<p>The laptop manufacturer&#8217;s driver package installs a Windows service called &#8220;Qualcomm Gobi Download Service&#8221;, its job it is to upload these firmware files to the card after every power-cycle. Thanks to <a href="http://marc.info/?l=linux-usb&#038;m=123874553630076&#038;w=2">Alexander</a>, <a href="http://marc.info/?l=linux-usb&#038;m=123879054732283&#038;w=2">Sergey</a> and <a href="http://www.codon.org.uk/~mjg59/gobi_loader/">Mathew</a> I was able to work out how the Download Service actually interacts with the card.</p>
<h2>The Future</h2>
<p>I don&#8217;t know how responsive Qualcomm is, so I don&#8217;t know how quickly these issues will be resolved; I would hope that as the Windows 7 release looms near that they will be prioritizing support. If these problems are not fixed soon then I will probably package GobiLoader up into a service that watches for the QDLoader port to load the firmware on-demand.</p>
<p>I&#8217;m also working on a post describing the handshake protocol in detail based on what I was able to gather from other code, protocol traces, and trial-and-error. Hopefully this detailed information can be useful in making the Linux support more robust, which &#8212; for me &#8212; is useful when firing up my Ubuntu partition.</p>
<p><b>Update:</b><br />
I&#8217;ve cleaned up the source code and you can grab it here if you&#8217;d like to take a look or modify it. <a href='http://blogs.6bit.com/josh/wp-content/uploads/2009/05/gobiloadersource.zip'>GobiLoader Source</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.6bit.com/josh/2009/05/qualcomm-gobi-wwan-card-on-windows-7/feed/</wfw:commentRss>
		<slash:comments>97</slash:comments>
		</item>
	</channel>
</rss>
