Showing posts with label workaround. Show all posts
Showing posts with label workaround. Show all posts

Tuesday, September 9, 2014

Add Custom Ringtones To Motorola Razr v3m

I recently purchased a Motorola Razr v3m phone. My previous carrier used the T-Mobile network (whose reception was iffy at best in my area), so my new carrier uses Verizon, whose coverage is far superior.

Unfortunately, though, the v3m is hobbled beyond belief! 

Aside from Verizon's typical anemic interface for its v3 series phones, the phone provides no easy way to add custom ringtones, for example, in my case from my Windows 7 desktop. The phone itself even has a slot for a micro SD card, but this card is completely inaccessible from the phone's UI. Motorola Phone Tools, the software that usually allows you to quite easily copy multimedia from your PC to your phone, had no such options available for the v3m.

A few phones back I'd owned a Razr v3c, and it at least allowed you to craftily send a text message with an attached MIDI file which you could then assign as a ringtone, but no such luck with the v3m. Verizon has gone out of its way to funnel customers through its online marketplace for the privilege of obtaining custom ringtones, wallpapers, pretty much anything.

After poring over numerous forum threads from people trying all kinds of workarounds, and trying some dozen different methods, I had no luck whatsoever. However, finally I found a solution which enabled me to not only add my favorite MP3 ringtone (which happens to be the "dying phone" one from the movie Crank), but also freely modify and transfer photos and wallpapers and other stuff.

First of all, let me spell out a few details of my particular v3m, which could determine whether you will be successful with these steps or not. These are found via Settings => Tools => Phone Info:
Software Version: 24.1_01.19.09
PRL Version: 59396
ERI Version: 4
Technology: dual800/1900 CDMA 1X-EVDO 

Now, before I outline the steps, here is a ZIP file containing all the utilities which worked in my particular case. Download this file, then follow these steps.

1. Click twice on MotorolaDeviceManager_2.4.5.exe. This will install the drivers for three devices which Windows 7 will need to talk to the Razr v3m, the Motorola USB Modem, Motorola USB Diagnostic Port, and the Motorola USB Compositive Device. Note that these devices will only appear in Device Manager when the phone is actually plugged into your PC via USB.


2. Now, run the file bitpim-1.0.7-setup.exe, which will install the BitPim utility.

3. Assuming you've successfully installed the Motorola drivers in step 1, connect your PC directly to your v3m via USB cable; some have reported problems going through a USB hub. Windows should recognize the phone and begin setting up the drivers for the hardware. Wait for Windows to successfully recognize the hardware before proceeding.

4. In Device Manager, right-click on the Motorola USB Modem, click Properties, click the Advanced tab, and then click the Advanced Port Settings button. This will reveal the COM port the device uses, which is important for the next step.



5. Open BitPim. If prompted that no phone has been detected, hit OK and ignore that for now. Click Edit => Settings, and first ensure that v3c is selected as the phone type (yes, v3c, not v3m).



6. Click the Browse button, and in the Choose a comm port screen, click on Motorola USB Modem (which should be listed as an option under Available Ports if it was detected successfully by Windows), and verify that the message about the port being selectable is displayed, and that the COM port number corresponds to the COM port in Device Manager identified earlier. Click OK assuming all of these check out.



After following the above steps, you should now have access to your Razr v3m's ringtones, wallpapers, and more. I refer you to BitPim's online help to get some tips on how to actually use BitPim to interface with your phone.

NOTES:
  • I've found with my phone that MP3 ringtones for the v3m must be less than 300 KB in size, and have a bit rate no higher than 192 kbps. Also, the length of the actual tone must be under 30 seconds. However, your experience may differ depending on your phone's firmware and options.
  • Upon adding custom ringtones to your v3m, you should navigate the phone's file system as illustrated below, first by clicking Filesystem in the left-hand pane, then clicking the forward slash at the very top (the "root" of the file system). If you don't see any folders or files beneath the root, you can right-click in the white space in that middle pane and click "Refresh Filesystem". Once you can see the files and folders, click on the root up top, and delete the file MyToneDB.db. Then, next chance you get, power the phone off and then on again. This will cause the phone to rebuild its ringtone index to include your custom tones.



Saturday, August 2, 2014

Intel SSD Toolbox Download Problem

In trying to download the latest Intel SSD Toolbox (version 3.2.3), I found that I could download neither with Firefox nor even Internet Explorer. 

Clicking the "I accept the terms in the license agreement" didn't start the download as I'd expect, and clicking the "do not accept" also did nothing.


I right-clicked on the page and clicked View Source, and managed to find the direct link. I bypassed complying with the license agreement, true, but if Intel had tested their site code thoroughly, maybe a workaround like this wouldn't be necessary in the first place.


Here
is the direct download link.






 

Thursday, April 17, 2014

Intermittent PageRequestManagerParserErrorException With Full Postback

I have a project with a bunch of ajaxified Telerik controls within several nested UpdatePanel controls. As part of an Excel export process, I have a button which upon clicking performs a full postback, generates a spreadsheet from a RadGrid, and finally prompts the user to download the file. 

Once in a while, though, the export process would throw the dreaded and unhelpful Sys.WebForms.PageRequestManagerParserErrorException exception.



Eilon Lipton's helpful post gave a handy checklist of things not to do, but in spite of ensuring all the common causes were accounted for, it would still occur occasionally.

I tried implementing a workaround shared by a colleague and thus far it appears to have helped. This involves setting the OnClientClicked event handler of the export button so that it triggers a brief pause prior to initiating the full postback using a client-side Javascript.
function onExportClick(sender, args)
{
     setTimeout(

          function () 
          { 
               __doPostBack(sender.id, "_MyButtonID") 
          }, 
          500
     );   
}

The error itself points you in the right direction, but some more context sure would be nice. Anyway, apparently this script mitigates situations where the Telerik controls are still in the process of being rendered when the full postback is initiated, corrupting the Response header in the process. 




Sunday, February 2, 2014

Cannot Install Windows Updates

My Windows 7 install inexplicably began to have issues with installing updates.

Service pack 1 installed fine using an installer, but other incremental updates consistently failed, they would download but they'd be skipped by Windows Update and reported as having not been installed.

One fix involved deleting a folder and letting the update process recreate it, specifically this one:
C:\WINDOWS\SYSTEM32\catroot2

This folder contains part of an internal Windows database which it uses to track updates, and a log file, dberr.txt, which was rife with error messages like these:

CatalogDB: 6:27:32 PM 2/1/2014: catdbsvc.cpp at line #3454 encountered error 0x8007000e
CatalogDB: 6:27:32 PM 2/1/2014: catadnew.cpp at line #1915 encountered error 0x8007000e
CatalogDB: 2:16:29 PM 2/2/2014: catdbsvc.cpp at line #969 encountered error 0x8007000e

 
Interestingly, the error 0x8007000e was frequently returned as a response in the failed attempts to update.

Based on this seemingly corrupted database folder, I decided to try deleting it and then have Windows recreate it by taking the following steps, and now updates are again able to be installed.
  1. Open a command prompt with administrator access.
  2. Stop the Cryptographic Services, which normally has a lock on the above mentioned folder, by typing this: NET STOP cryptosvc
  3. Rename (or, if you're brave, delete) the C:\WINDOWS\SYSTEM32\catroot2 folder.
  4. Start the Cryptographic Services by typing: NET START cryptosvc
  5. Run Windows Update, and then have it download and install one or more updates to verify that it does so successfully.

After doing this I was able to download and install the latest updates successfully.



Friday, December 27, 2013

LinkButton OnClick Not Firing After OnClientClick

I worked around an oddball problem where the OnClick event of an ASP LinkButton would not fire following execution of some JavaScript tied to its OnClientClick.

The intent is to enable a row in a Telerik RadGrid to be removed by clicking the corresponding button in the row, and more specifically have a modal confirmation dialog appear to prompt the user to confirm their choice.

Here's markup for the GridTemplateColumn containing the button:
<telerik:GridTemplateColumn HeaderText="Remove" UniqueName="Remove" 
  FilterControlWidth="20">
    <ItemTemplate>
        <div style="cursor: hand;">
            <asp:LinkButton runat="server" ID="_RemoveItem" 
                Name="_RemoveItem" Text=" X " Font-Underline="False" 
                ForeColor="DarkBlue" 
                OnClientClick="confirmAspButton(this, 'Are you sure?'); return false;"
                OnClick="RemoveItemButtonClick" 
                style="font-weight:bold;color:red;">
            </asp:LinkButton>
        </div>
    </ItemTemplate>
    <HeaderStyle Width="55"></HeaderStyle>
</telerik:GridTemplateColumn>

The confirmAspButton function is a little JavaScript which is bound to the OnClientClick method of the LinkButton. If the user clicks OK, the confirmation passes and a postback will occur to execute the code beneath the OnClick method, whereas if they click Cancel the dialog will simply disappear.
     function confirmAspButton(button, message) 
     {
          function aspButtonCallbackFn(arg) 
          {
             if (arg) 
             {
                  window.__doPostBack(button.name, "");
             }
          }
            
          window.radconfirm(message, aspButtonCallbackFn, 330, 120, null, "Confirm");
     }


Seems simple enough, yet for some odd reason, in Internet Explorer 10, the LinkButton brought up the dialog just fine, and although the Cancel button click performed as expected, clicking OK had the same effect as cancel and merely cleared the dialog without executing the underlying code.

I managed to find a workaround via StackOverflow which suggests using a Button rather than a LinkButton. Sure enough, this did the trick, for whatever oddball reason whose particulars I could care less to dive into...




Saturday, May 25, 2013

Sound Card Stereo Channel Mysteriously Dies

The left channel of my Sound Blaster X-Fi Xtreme Audio sound card decided to die.





















I carefully smoothed my headset cabling in case a break had developed in the typically very fine stranded wiring of the headphones, and also tried removing the plug with an MP3 playing and noticed that only one channel was being played back, the right with the plug fully inserted, left if I just slightly unplugged it. Just in case I plugged the headphones into my laptop; perfect stereo sound, so something's definitely up with the card.  

I popped open the computer and examined the headphone jacks on the card. They appeared to be made of plain copper, and they seemed to have oxidation, much like an old penny.

I took a flat-bladed screwdriver from an eyeglass repair kit and carefully scraped away at the copper surface, revealing shiny metal underneath, then blasted away any residue with some canned air.




Now my music is once again in glorious stereo!




Tuesday, February 5, 2013

Foscam FI9821 Wireless Workaround

In my abortive attempt to review the Foscam FI9821, I mentioned the complete inability for the camera to find let alone connect to mine nor any wireless networks in my neighborhood. This precluded my ability (and desire) to review the camera any further.

Now, however, the camera sees and connects successfully to my wireless network. 

After my issues with the late Foscam FI9820 with its poor daytime image quality and anemic firmware, I already experienced RMA hell and didn't want to go through it again. Thus, being handy with electronics, I decided to try an off the wall suggestion found in Foscam's support forum.

Note that the following steps may VOID the manufacturer warranty.

1. Power off the FI9821 and disconnect all cables.

2. Remove the rubber feet on the underside of the camera, this should reveal a couple of screws. Remove them. There are also two screws located on the underside beneath one round laser QA label and another beneath a round paper label. Remove the labels and then the screws as well.

3. Carefully remove the bottom of the camera and follow the wire that runs from behind where the antenna screws in to the camera to a metal "post" on the circuitboard, similar to the one depicted here:


4. Remove the connector, then reconnect it, and as you do so wiggle it, just a little bit.

5. Reverse the steps above and reassemble the camera.

6. Connect the power and ethernet cables, and proceed to configure the camera to connect to your wireless network if you haven't already. Be sure to save the settings!

7. From the camera's web interface, on the Wireless Settings screen click the Scan button. Your wireless network should appear similarly as shown below:


8. Unplug the ethernet cable and wait a minute or so, then try browsing to the camera's IP address. With luck, the camera will have switched to wireless mode and you should then be connected wirelessly, at last!

Why does this work?? It could be due to insulation which is sometimes used to coat electronics, such as that used to coat thin wire that's used for coils. Perhaps in the manufacturing process, the post got sprayed with insulation by accident, leading to a poor connection with the antenna wire connector. Wiggling the connector around on the post may've scraped away any insulation, leading to a solid connection.

Regardless, releasing a $150+ camera so hurriedly with a problem like this, one that some simple quality assurance practices could've caught and fixed, is ridiculous. Although again I applaud Foscam for their responsive customer service and providing me with a free upgrade to the newest model of their camera, shame on them for not catching this frustrating little glitch!

I will review the camera in earnest in the near future, now that its wireless connectivity, a core feature in my eyes, is operational at last.


Friday, January 20, 2012

DD-WRT Port Forwarding Problems

Recently I bought a Buffalo WZR-HP-G300NH wireless router accompanied with a branded version of the popular third-party linux-based firmware DD-WRT to replace my previous router, also a Buffalo but an older model, the WHR-HP-G54
Buffalo WZR-HP-G300NH2, my soon-to-be-nemesis.

My old router ran rock solid for 5+ years' worth of torrenting and wireless and innumerable bits of data transfer until inexplicably one day a power surge appeared to have killed the wireless. Wireless is too handy not to have, so I bid my venerable router farewell. I figured this also would be the opportunity to do something I hadn't tried in some time, host a web server on my local machine. My ISP doesn't block port 80, so I figured I could pretty easily set up port forwarding and invite some folks to test out a site I've been developing.

I began by setting up Port Forwarding for TCP port 80 to my computer's IP address on my LAN in DD-WRT. I also used DynDNS to redirect a custom public URL to the dynamic IP address assigned by my ISP. Curiously, after rebooting the router, for some reason port 80 traffic returned "The connection has timed out" in Firefox, not only when I tried to hit the URL from a remote session to a computer at my office, but even using that same URL or even the local IP address on my own LAN. 

To rule out the possibility of my ISP blocking port 80 traffic, I tried setting up a spare Linksys WRTG54 v6 router I had lying around, using its factory firmware to set up a port forwarding rule. This worked fine, so clearly my ISP was not to blame. Indeed, a visit to CanYouSeeMe confirmed that port 80 was closed off to the outside world.

Undaunted, I decided to upgrade to the newest firmware from the manufacturer's support site. Buffalo seems to have had a bit of a disconnect with their product labeling. Whereas I thought I'd ordered the WZR-HP-G300NH, the model number on the router itself indicated it was actually a WZR-HP-G300NH2, which turns out to have different internals. The product dropdown list indicated two flavors of this particular router, both indicating WZR-HP-G300NH, and to the far right, one indicated as v1, the other v2.





This in itself was no big deal until I tried updating to the latest available firmware from Buffalo's support site. I assumed WZR-HP-G300NH2 corresponded to the entry for WZR-HP-G300NH v2, and chose the firmware accordingly. I proceeded to update the firmware via DD-WRT installed at the factory, and even got a message that the update went successfully and that the router commenced a reboot. Minutes passed, the DIAG light on the router flashing for a while, at first, but then ominously steady.


I left it for an hour to grab something to eat. When I returned, the steady DIAG stared me in the face. I went ahead and cycled power on the router, and the DIAG again stayed steady. Worse, the router's DHCP appeared dead, leaving Windows to assign the default IP via its APIPA, a fallback in case the router doesn't give out an IP address dynamically. The router didn't even respond when I assigned a static IP in its default subnet.

My shiny new router became officially bricked.




I managed to unbrick the router thanks to this blog post and at least install a compatible build of DD-WRT contributed by Brainslayer, a DD-WRT forum user, located on the DD-WRT FTP site here

Incidentally, the DD-WRT Router Database is currently clueless about the existence of the G300NH2 version of the router; the "official" build of DD-WRT I downloaded on the off chance it might work (wzr-hp-g300nh-dd-wrt-webupgrade-MULTI.bin) upgraded fine, according to the DD-WRT web interface, but the router bricked shortly after rebooting without any message indicating failure. Attempting to use this same build to upgrade via TFTP returned "Unsupport MODEL." which seems to indicate that the GUI overlooked the crucial problem with trying to apply a firmware that the router's most basic boot code recognized as an incompatible version... but I digress!

I then researched port forwarding issues and posted details to the DD-WRT forums as well as ServerFault, and although I was able to fix the issue with port forwarding failing from a computer on the LAN thanks to a workaround posted on the forums, no matter what DD-WRT build I tried, external port forwarding failed.

After literally dozens of attempts to reflash the firmware with various builds of DD-WRT, searching for alternative firmwares like Tomato and HyperWRT only to find that they support the G300NH, not the G300NH2, I finally settled on OpenWRT. They, at least, have a wiki specific to the v2 version of the router, albeit one that doesn't appear toward the top of the search results. I also found a wiki for the v1 model, riddled with warnings about the mysterious hardware discrepancies between the v1 and v2 models, interspersed with various "fix me" tags which didn't bode well.

Fix Me? Warning?? Super.

Unfortunately, a big disappointment for me was OpenWRT's lack of a native web interface. I've used Linux so that's not so much of a problem, it's just more scripting and typing that I'd rather relegate to a web interface designed for the job. DD-WRT is leaps and bounds ahead of OpenWRT as far as its web interface is concerned.

Nevertheless, I found a separate web interface for OpenWRT named LuCI. I used the same TFTP method I'd utilized to unbrick the router to install OpenWRT itself, then proceeded to download and install LuCI. This seemingly simple process caused tremendous grief for several reasons, mainly through inconsistent documentation and aggravatingly terse responses to questions in myriad forum posts.

Case in point, I encountered numerous forum postings where someone reasonable familiar with Linux tries following steps outlined in the wiki to install the firmware and the web interface, but encounters a build error. All too often, the expert response to this conundrum essentially was "just do it this way" or "that's what you get for doing x instead of y".

Questions came to mind. Do what which way? How should I try what you're suggesting? What the hell is the context of this task with which you are intimately familiar, but which I, a mere Linux tourist, am unaware of? Those aren't the kind of replies that facilitate a satisfactory resolution of a problem. At best they're static, at worst they're a brush-off by someone who thinks they're doing you a tremendous service by graciously responding to your plea for advice with a few vague words.

As of now, my once bricked router is successfully running OpenWRT with LuCI. BONUS, port forwarding works!

From LuCI, clicking on Network => Firewall and then the Add button under the Redirections section lets you set up a forwarding rule. OpenWRT with LuCI may not win in the intuitive web interface department, but that's far less important than being able to freakin' port foward!



Problem solved, and thus ends a journey down a road I hope to never take again. If somehow I'm stuck having to go this route (pun intended) once again, I'm taking this router out back and crushing it to dust with a sledgehammer (its potential replacement is already en route from NewEgg just in case).






Wednesday, February 16, 2011

ImageShack, I Am Disappoint

ImageShack is one of many free online image hosting services.

Up until recently it's been one of my favorites because it allows you to easily copy a simple direct link to an image you've hosted. This allows you to link someone directly to a given image without any clutter, just the image by itself.

As of a week or two ago, however, they've disabled their Direct Link textbox and insist that you register with their site for this privilege. Sure, you can still freely obtain the Link code, which will show the image plus some minimal markup of ImageShack itself, and you can still copy various forum, thumbnail, widget and other markup for the image you wish to host, but really, most often I just want the image alone, that's all, nothing else. 

I freely admit it, I am a cheapskate.



There are several workarounds for this annoyance. 

First of all, you could simply visit another image hosting provider like imgur and use their service instead. Of course, you could sign up and create a user account with ImageShack; obviously ImageShack is in favor of this option. Another option is to visit BugMeNot and borrow somebody else's credentials. If, however, you yearn for ImageShack prior to their shenanigans, you can still obtain the Direct Link through this relatively convoluted series of steps:
1. Upload an image to ImageShack as usual.

2. Right-click on the Upload Successful page and view source.

3. Copy the direct URL to your image, and paste it wherever you like.

Why ImageShack chose to do this, I don't know. I've used their Direct Link for years, why they would choose to implement this, particularly when so many other image hosting sites like imgur continue to offer a plain URL to your hosted image, is a mystery to me. 

I'm certainly not enough of a die-hard fan of ImageShack that I would go to the trouble of digging into the HTML to grab that direct link each time, so I guess the easiest option is to just use another provider from here on out. Perhaps this will lead to a similar backlash to the infamous Gizmodo design change, which caused a significant reduction in visits to their site?

Yet another example of how a seemingly small change to the user experience can prompt users to seek an alternative.






LogMeIn Laptop Screen Stays Blank After Remote Session

LogMeIn is an excellent online service which offers a free method of remotely controlling a PC via web browser. 

Recently I encountered a minor glitch, however, and whether LogMeIn or Windows 7 or nVidia are the culprit, I'm not sure.

I had remoted in to my Dell Latitude E6410 laptop using the latest free version of LogMeIn. It is equipped with Windows 7 64-bit and NVIDIA NVS 3100M display adapter, each with the latest updates and drivers available. 

All seemed fine via remote, but when I returned to the office I found that although my secondary monitor activated normally, my laptop display remained seemingly asleep and unresponsive. I tried using the key combination of the Windows key and P then clicked Extend to try to have Windows reinitialize the displays and wake everything up, but no joy.



I then tried just changing one of my Display settings, the Resolution, to a different value in order to have Windows enable the Apply button, and then clicked it. 



After doing this, my laptop screen was no longer blank.