technology and zen of life

“A heisenbug (named after the Heisenberg Uncertainty Principle) is a computer bug that disappears or alters its characteristics when an attempt is made to study it.”

Bypassing the DELL unrecognized adapter issue

Dell is notoriously infamous for selling adapters that tend to go bad after few years of heavy usage. In the last 3 years of my laptop use, I’ve already had to change my adapter thrice due to an unrecognized adapter bios warning. You can read about why this issue occurs here .

I don’t really mind this message but dell has gone further to annoy their consumers by forcing a cpu throttle to the lowest scaling frequencies. Also, they will not allow you to charge your battery if this message pops up, for no reason but to force you into buying a new adapter. Since this is expensive business and all three of my dead and dying adapters work perfectly fine as far as the voltages required for operation are concerned, I was desperately searching for a software bypass to somehow allow frequency scaling on my CPU and work on reasonable speeds. However googling didn’t help much at which point I started reading up on BIOS and ACPI, the ones responsible for power management. Finally, I stumbled upon this beautiful solution to bypass this limit dell forces upon me.

On probing ACPI on the linux kernel I came across /proc/acpi/processor/CPUx/bios_limit which is the limit the bios is asking the kernel to respect. Hence, all one needs to bypass it is to ask the kernel to ignore bios_limit using a kernel parameter via grub namely processor.ignore_ppc=1. So just add this line to grub.conf [ or to GRUB_CMDLINE_LINUX in /etc/grub.d/grub if you’re using grub2] and you’re set.

Alternately, you can use rmclock[gui] on windows to achieve the same. However don’t forget to set the processor type to mobile if you’re using a laptop to get the right voltage values for various p-states. I hope this helps folks who’ve been annoyed by the way dell handles its adapters like me.

$.getScript() and Firebug: But then, who was code?

If you’ve ever tried to import javascript via jQuery.getScript(), you might be rendered unable to actually debug the fetched js in firebug or similar debuggers. The reason is simple and lies in how jQuery implements getscript :

getScript: function( url, callback ) {
        return jQuery.get(url, null, callback, "script");
}

where get itself is implemented as :

get: function( url, data, callback, type ) {
        // shift arguments if data argument was omited
        if ( jQuery.isFunction( data ) ) {
                type = type || callback;
                callback = data;
                data = null;
        }

        return jQuery.ajax({
                type: "GET",
                url: url,
                data: data,
                success: callback,
                dataType: type
        });
}

Debugging further you’ll find that ajax uses JSONP to allow linking scripts from non-origin domain by taking advantage of the behavior of src attribute in script tag. Read the rest of this entry »

Email Subscription

Disclaimer

The views expressed on this blog are personal. We do not claim to be a representative voice of the views of any organisation whatsoever. We are not responsible for the content present on the blogs to which we have linked.Views expressed are solely that of the author and does not reflect a collective opinion of contributors.