Author Archives: eyedtentea

No more Google AdSense plugin for WordPress + yellow background color on responsive ads

Not too long ago, I received an email from Google AdSense stating they are dropping their plugin for WordPress. Within the email, they provided two options in placing AdSense ads into WordPress sans the Google plugin. I was able to apply both methods to my site. I made a quick tutorial on how I did it. Check it out.

I encountered a problem with the responsive ads that were generated. If the ad chosen by Google was smaller than the size of the container, a bit of yellow shows. I figured I’d tweak the code generated by Google by adding "background-color:transparent" setting to the style attribute. I decided to go inline instead of tweaking the style sheet. My logic is: if I decide to change my theme, the inline code should stay the same, whereas, the external style sheet will update with the theme.

Review: The Roost Laptop Stand


v1_unmountedFront In 2013 The Roost was successfully crowd funded via Kickstarter.com. I was lucky enough to stumble upon the project. It was an easy sell; I jumped on board and backed it.

The Roost was a unique product. It folded flat for easy transport and converted to a laptop riser like a transformer (sans sound effect). The Roost lifted the laptop at the hinge point. It would wedge itself at the hinge and the base of the laptop would sit on the lower crossbars. There were four contact points: two at the hinge area and two at the base.

The Roost (ver1)

The Roost version 1 with a MacBook (2010).

v1_mountFocus v1_mountFocus2

The Roost ver 1 + hinge mount

The Roost version 1 with focus on the hinge mount area.

There’s a slight flaw. None of the four contact points have any traction. It is smooth plastic or smooth resign material. This left the laptop to The Roost mount a little squirrelly. Any sudden jarring (like a bumping of the table or nudge on The Roost/laptop) and the laptop would come off the hinge (literally).

Fast forward to 2015. The Roost comes back with a version 2 offering. Since I backed the original Kickstarter project, I was notified of the second project. I was still using (and liking) The Roost (version 1), but I also liked the redesign of the 2nd version.

The Roost version 2 still used four contact points, but it no longer used the hinge as the main anchor/support. The main support will fall on the base of the laptop falling into a C (it’s more like a “G”) channel. The channel/groove has a rubber-like grip to it, so the laptop is more secure. This resolves the issue I had with the fist version. v2_unmountedv2_mountSolid

Another addition to the redesign makes the second version adjustable in height. There are three locking positions in which to set the laptop. You can pretty much get it to a position to meet your ergonomic needs. The original version was not adjustable in height.

Now let’s discuss the bad. There is a little hazard when adjusting the height level. You need to depress the white trigger to unlock the height setting. If you’re not careful, you can pinch a finger (or two)… and I did (check it out on the video).

The second flaw is the C/G channel in which the laptop base sits in. From the looks of it, The Roost version 2 was designed to fit laptops of a specific size. I’m guessing 2014 MacBook Pros and smaller. I’m still using a 2010 MacBook (the last plastic kind before Apple changed to an all aluminum body). My MacBook is fatter than the current Apple laptops (current MacBook, the MacBook Pro line, and the MacBook Air line). It barely fits. For fatter laptops, like my Lenovo G505, it kinda fits. The G505 does fit in the channel, but it has an awkward tapper shape that dislodges from the channel when trying to adjust the height of The Roost.v2_mountSolidBitev2_mountZoomed

The two flaws that I found in The Roost version 2, can be avoided by the user. The fix is to not mount the laptop until the desired height is set. Do not try to adjust the height when the laptop is mounted on The Roost. You can, but you have to be aware of the finger pinch factor, and if your laptop is a little fat, be aware that it can get unseated from the channel during the height adjustment.

Overall, I dig The Roost. I was happy with the first version. I’m even happier with the second version. For more info go to: http://www.therooststand.com/

Android Marshmallow

Android Lollipop to Marshmallow (6.0)

I received an over-the-air notification on my Nexus 5 for Marshmallow (Android 6.0) a few days ago. I put off on doing the update until today. I wanted to make sure I had enough time to migrate all my apps and time to troubleshoot any issues.

In this post, I’m just going to give a quick overview of my update from Lollipop (5.1.1) to Marshmallow (6.0.0). I’ll also provide links to the downloads.

Backup:

I ran a backup of all user apps using Titanium Backup. Instead of re-downloading the apps from Google Play, I reinstalled the apps  from the backup.

Since this is a major upgrade, I also ran a full Nandroid backup of Lollipop via TWRP.

Upgrade:

My Nexus is rooted. I’ve had issues with updating the various Lollipop versions. My resolve was to manually flash each of the system files. I approached the Marshmallow upgrade with the same technique. I downloaded the factory image and ran through the steps (see this post for the steps). Here’s the link to the factory image.

Recovery:

This was also a straight forward process. I used the most current version (2.8.7.1). This is the same version I used on the last Lollipop update. Here’s the TWRP Nexus 5 (hammerhead) link.

SuperSU:

Reestablishing root was where I came across a problem. I used the Lollipop rerooting method (see this post). I was able to boot into Marshmallow without any issues. The problem was when I tried to update SuperSU via Google Play–it failed. I did a quick search and found Chainfire’s SuperSU 2.52 beta file. I sideloaded that… bad decision. I was stuck in Marshmallow’s boot animation (boot loop). I had to do more digging and found that there is a corresponding boot.img file that needs to be flashed in tandem with the SuperSU beta file.

I got out of my boot loop by holding the volume up & down, and the power buttons together. The resulting key combo boots into bootloader. I connected my Nexus to my Mac and flashed the boot.img file. I then booted into recovery, and installed Chainfire’s SuperSU beta file.

Here’s the XDA post that has a link to the boot.img file. The beta file is found here.

Bonus: workaround for Android Pay credit card input issue

To input a credit card to the Android Pay app, you’ll need to disable root (there’s a checkbox that needs unchecking; check the settings in SuperSU app). Input the credit card info and then reestablish root by checking the box again. I was able to input my credit card using this method. I haven’t tested Android Pay. There’s a possibility this will still fail.


Yosemite install on USB

Create a Mac OS X bootable USB Thumb Drive (using createinstallmedia)

Apple stopped making their software available on CD/DVD ages ago. Applications including the entire OS is downloaded only through their App Store.

When you download and install the OS from their App store, it performs an upgrade to the existing operating system. Your applications and a large majority of your settings are preserved. But what if you want to perform a clean install? Wipe everything off and start anew? Well to do that, you’ll need to have the installer on another media. Such as another hard drive you can connect to, a CD/DVD, or flash memory (thumb drive, SD card, etc.).

To transfer the OS installer to a secondary storage media requires more than just copying the installer to the media. It has to be bootable. You will need to install the OS on the secondary media. The general method is to format the target destination (flash memory, hard drive, etc.) and run the installer on the target.

createinstallmedia is an easy way of installing the operating system to the secondary storage media. This was introduced in Mavericks. (Unfortunately I didn’t know about it until now because I skipped Mavericks.) createinstallmedia is packaged in their OS installer. There is no need to download it separately. createinstallmedia is a program that needs to be run in Terminal.

There are numerous tutorials available online (video and writeup). From what I’ve read and seen, the steps require downloading the OS installer, formatting the target media, copying the code and pasting into Terminal, and then executing the code. The tutorial steps are straight forward. If you don’t deviate from them, then you will succeed with a bootable system.

For my tutorial, I’m targeting the command line averse. The method I employ gives more leeway. For example, the majority of the tutorials online have you download the installer from the App Store and leave it alone (that is, don’t move it from the Applications folder). Well, say you’ve downloaded the OS already and have is stored in another folder or another volume (a different hard drive)? If you try to execute the command based on their tutorial, it will fail because the path is wrong. The method I use will ensure the path is filled out correctly. I’m using a USB flash/thumb drive as my target destination, but this should work on any other form of flash memory or external hard drive. The only caveat is the target destination must be large enough to accept the OS (min is about 6GB; 8GB is ideal).

Resources:

raised garden bed

DIY Raised Garden Bed Using Pocket Screws

There are a lot of benefits for having a garden, especially an edible one. You get to control the chemicals you expose your food to, and thus restrict the amount of chemicals you consume. From the garden to the table–you cannot get any fresher (nor greener) than that.

I had some success in planting directly in the ground. What I find troublesome about that is the weeding required. The buggers grow everywhere. The solution is to isolate the plant… a garden bed, aka an oversized garden pot. I did some research and decided to take this on as my next DIY project.

There are a lot of raised garden bed build types. You can construct it from stone, brick, wood, or simply a mound of dirt. For my project, I decided to go with a wooden bed. I was dissuaded from using pressure treated wood because of the likely hood the chemicals can leach into the soil and onto the plant (there’s a lot of debate about that NOT being an issue today, but I’m going to err on the side of caution). Cedar and redwood were highly recommended for its longevity. Redwood won out because I can easily find it here in the Bay Area. It is expensive though.

For the build, I wanted to keep it simple. I’m lacking in wood working tools and some of the plans/designs would be difficult for me to execute. A very typical and simple design just uses the planks/boards that comprise the width and length of the garden bed and scrap pieces of wood or posts (usually a 4×4). The posts or scrap wood would be used in the corners as nailing anchors for the sides of the garden bed. I didn’t want to go this route because I didn’t want to buy extra wood just for nailing purposes. It just seems like a waste of wood and more importantly waste of money. My solution was to use pocket screws. I saw them being used on PBS woodworking shows. They used pocket screws to join pieces together in furniture and cabinets. I figured why not for this application? After finding out they make weather resistant pocket screws, I green lighted this option. I decided to go with the Kreg pocket hole system because that was used on the PBS shows and it’s readily available online (links below) and in big box stores.

I did more research on pocket screw joinery. Knowing the thickness of the material you’re using is very important. For optimal bite, the screw should leave the board (that has the hole bored out) at or near the midway point of that board (https://www.kregtool.com/store/c13/kreg-jigsreg/#tab1394). Therefore, positioning of the jig (device used to bore the pocket screw hole) is important. The thickness of the work material is also important in selecting the right screws to use. It needs to be long enough to bite into the connecting board. It is also important not to over torque the pocket screw. You don’t want to strip the wood threads. This is crucial info. I would hate to spend all the time and money to have the joint fail because I drilled the hole in the wrong position, stripped out the threads, or use the wrong size screw to connect the pieces together.

The material cost is approximately $65. The screws and plugs were relatively cheap. The large chunk is due to the wood choice: redwood. The cost can easily be reduced by using more common cheaper wood. The compromise is the longevity of the garden bed. A cheaper wood, like pine will rot faster.

The tool cost is hard to factor in. Yes, I did buy the Mini Kreg Jig, and the driver bit specifically for this project. However, its use is not only restricted for building raised garden beds. It’s a joinery system. I can use it to repair drawers, chairs, tables, etc. As with the bar clamps and combination square, it’s not a must have in the home DIY tool box, but there are multiple uses for those tools and therefore, it’s a safe buy.

Here’s the video I shot of the project and price breakdown (located below the video link):

Project tools & materials

Wood:
2x6x16 untreated redwood

  • I purchased two pieces
  • cut to four 4ft lengths
  • cut to four 2ft lengths
  • durable
  • common in California (where I’m from)
  • I paid approx $35 for both boards at Home Depot

Kreg:

Clamps:

  • Irwin Quick Grip ($20)
    • I used 2 clamps to lock the jig to the board when boring out the pocket holes and to lock the wood together when assembling the levels together
  • alternative: Kreg Locking Face Clamp ($20)
    • this type of clamp will lock the jig to the board better than the bar clamp

Combination Square

Soil:

  • top soil
    • 3 cu ft
    • $8.25 total
  • garden soil
    • 3 cu ft
    • $8.50 total
  • manure
    • 1 cu ft
    • $1.50

    digital torque adapter from Harbor Freight Tools

    Digital Torque Adapter

    I keep a torque wrench in the trunk of my car. Unfortunately, I’ve stored the wrench loaded all this time. The wrench was actually set and locked at 78 lbf.ft. The wrench is a mechanical click type. By storing it loaded, the pressure on the spring will eventually weaken it. Resulting in an inaccurate torque reading. It’ll click before reaching the desired torque setting. (Check out this article from www.hotrod.com)

    I did some searching and stumbled upon digital torque adapters. Digital torque adapters measure the torque applied to a nut/bolt and displays the pressure applied on a digital screen. This can convert any socket wrench into a torque wrench. It will not prevent over torquing, but will signal (via audio and/or visual markers) when the target torque setting is reached.

    Another feature of digital torque adapters allows the user to test the accuracy of their torque wrench. By knowing how far off the wrench is reading, the user should be able to fine tune the wrench.

    I picked up a Pittsburgh Professional Digital Torque Adapter a my local Harbor Freight Tools brick and mortar store. After a 20% discount (via email coupon), the total only came out to $26.39. Harbor Freight always gets knocks on the quality of their goods (rather, lack of quality), but this device is fairly accurate (check out this article from www.hotrod.com).

    I tested the two torque wrenches that I own. One is a Craftsman and the other is a Gorilla Automotive wrench (the one improperly stored). The Craftsman wrench was stored properly. In fact, the only way for it to fit in its storage case is when the torque setting is set at the minimum value (~ 20 lbf.ft). The Gorilla Automotive is smaller in size and can fit in its case on any setting. The Craftsman pretty much matched the digital torque adapter… maybe off by 0.1 lbf.ft. The Gorilla Automotive was off by 4-5 lbf.ft… it clicked before reaching the desired torque setting. I did weaken the spring on the wrench.

    It took awhile, but I was able to adjust the Gorilla Automotive wrench to within 0.5-0.8 lbf.ft. I only use this for my lug nuts and that’s accurate enough for me. For added security, I’ll store the digital torque adapter in the trunk and use it whenever I use the Gorilla Automotive wrench. Big props to dail2fast on YouTube. He did a great review on the Pittsburgh Pro Digital Torque Adaptor (link here) and a guide in calibrating a torque wrench (link here).


    Nexus 5 manual update to 5.1

    I encountered issues when I updated my rooted Nexus 5 from 5.0 to 5.01:

    archive does not contain 'boot.sig'
    archive does not contain 'recovery.sig'
    

    (You can read about that here: blog post). For the 5.1 update, I decided to manually flash all the files, so as to avoid running into the same errors.

    The following is a step by step process of how I updated my rooted Nexus 5.

    Notice: If you don’t know how to use adb and fastboot, you should just stop right here. You’ll have to reference another tutorial. For those that proceed, you are responsible for your phone. If you brick it, it’s on YOU!

    Prerequisite

    • download and install adb & fastboot
    • download latest TWRP recovery (openrecovery-twrp-2.8.5.2-hammerhead.img)
    • download 5.1 factory image (“hammerhead”)
    • download and prep Chainfire’s CF-Auto-Root (XDA link)
    • run a Nandroid backup and transfer a copy of the backup to your computer
    • (optional) run a full Titanium backup of all your apps and transfer the copies to your computer

    Prep of 5.1 factory image

    1. expand the hammerhead-lmy47d-factory-6c1ad81e.tgz file
    2. expand the image-hammerhead-lmy47d.zip file
    3. rename the folder for easier reference (e.g.: extractedZip)
    4. move/copy bootloader-hammerhead-hhz12f.img and radio-hammerhead-m8974a-2.0.50.2.25.img files to the extractedZip folder
      • the img files are found in the expanded tgz file from step 1
    expanded hammerhead-lmy47d-factory-6c1ad81e.tgz

    This is the expanded hammerhead-lmy47d-factory-6c1ad81e.tgz file with the three important files highlighted

    final modified folder

    The folder contents of the extracted zip file, including the relocated bootloader & radio .img files from the .tgz factory image

    5.1 update via manual flash

    1. connect computer to phone via USB and boot phone into bootloader
      • command: adb reboot bootloader
    2. install bootloader-hammerhead-hhz12f.img
      • command: fastboot flash bootloader bootloader-hammerhead-hhz12f.img
    3. install radio-hammerhead-m8974a-2.0.50.2.25.img
      • command: fastboot flash radio radio-hammerhead-m8974a-2.0.50.2.25.img
    4. install system.img
      • command: fastboot flash system system.img
    5. install userdata.img
      • command: fastboot flash userdata userdata.img
    6. install boot.img
      • command: fastboot flash boot boot.img
    7. install recovery.img
      • command: fastboot flash recovery recovery.img
    8. delete the cache
      • command: fastboot erase cache
    9. from the phone, boot into Recovery
      • background image is of an Android on its back with chest open and red triangle (default system recovery)
    10. press Power + Volume Up buttons to enter into Recovery options
      • note: do NOT press and hold the buttons too long, as this will result in booting into the system (the phone), which will not boot… you’ll be stuck with the boot animation
        • if done accidentally, reboot back into bootloader: Volume Up + Volume Down + Power and continue from step 9
    11. select Wipe data/factory data reset
    12. reboot phone when data wipe is completed
      • booting into a newly installed system will take awhile — be patient!

    After installing 5.1 update: Re-root & install custom Recovery

    After the update, your phone has a fresh and clean install of Android 5.1… meaning there is no custom recovery, nor root access. However, Bootloader will still be unlocked. The default settings will not have USB Debugging enabled. USB Debugging enables you to run commands from your computer to your phone via USB.

    Install TWRP recovery and Chainfire SuperSU:

    1. setup the phone with your existing Gmail account
      • recommend setting up as a new device and use Titanium Backup to reinstall your apps
    2. setup USB Debugging
    3. connect computer to phone via USB and reboot phone into bootloader
    4. flash TWRP recovery: openrecovery-twrp-2.8.5.2-hammerhead.img
      • command: fastboot flash recovery openrecovery-twrp-2.8.5.2-hammerhead.img
    5. execute Chainfire’s CF-Auto-Root
      • Mac command: ./root-mac.sh
        • on a Mac, this will require the admin password of the Mac computer
      • the background will have a red pirate android
      • when complete, the phone will automatically reboot
    6. in Google Play store, update SuperSU to the current version
    7. SuperSU requires updating binary
      • select “Normal” and reboot when finished

    Reinstall apps & check phone settings

    To reinstall apps, download Titanium Backup and restore from there. If you have issues, I would recommend also using Nandroid Manager (Google Play Store Link). I resolved most of my issues by using Nandroid Manager to install the app and Titanium Backup to install the data.

    I recommend checking the phone settings. I’m on Ting (MVNO provider on the Sprint network; CDMA), so I updated my PRL and profile. The default for “Preferred network type” is set to Global; I had to update that to LTE.

    Multiple RSA key pairs using ssh-keygen & .ssh/config (Mac OS X tutorial)

    I got tired of typing my password after ssh‘ing to remote servers. After some googling, I found the solution, the ssh-keygen command and ssh-copy-id command. ssh-keygen generates an rsa private/public key pair. Once you generate the keys, you’ll need to store the private key on your computer and the public key to the server. ssh-copy-id command is used to copy the rsa public key onto the remote server. This command will also create the necessary file and change the necessary permissions to make this all work.

    I followed a tutorial from Ramesh Natarajan (http://goo.gl/fX68N). I got stuck on trying to copy the public key to the remote server. I’m on a Mac and apparently ssh-copy-id command is not built in. I found the Mac install (located at GitHub, MacPorts or Homebrew) and completed Ramesh’s tutorial. I was able to quickly connect to the remote server without typing in the password… How sweet is that?

    All was good until I started to frequently connect to different servers. Ramesh’s tutorial covers a single rsa key pair. For security, it’s best to have a unique rsa key pair for each unique connection . After some searching, this can be accomplished by modifying the ssh-keygen command and using the config file located within the hidden .ssh directory.


    I first began by creating another unique rsa key pair:

    ssh-keygen -f ~/.ssh/id_rsa_userA -C "userA @ server1"
    • The -f flag specifies the filename of the key file. In the example, it is “id_rsa_userA“. The private key will be “id_rsa_userA” and the public key will be “id_rsa_userA.pub". As you can see from the absolute path, the files will be locate in the home directory and within a hidden .ssh folder.
    • The -C flag is for commenting. The string that follows will be appended to the end of the rsa public key. This helps when you copy the public key to the remote server — you’ll know it was copied because of the comment you provided.

    The following is what you will typically see after you execute the previous line of code.

    Generating public/private rsa key pair.
    Enter passphrase (empty for no passphrase): [enter something complex]
    Enter same passphrase again: [confirm by entering it again]
    Your public key has been saved in /Users/username/.ssh/id_rsa_userA.pub.
    The key fingerprint is:
    81:d4:12:cd:57:aa:42:47:12:de:4c:23:6a:34:62:78 userA @ somedomain.com
    The key's random art image is:
    +--[ RSA 2050]----+
    |        ..+0.    |
    |         .. .    |
    |         *.*     |
    |       +.o o     |
    |     .. +        |
    |      S.  ..     |
    |        ..       |
    |       o + . . . |
    |        .  +o.oE+|
    +-----------------+
    
    • After generating the rsa key pair, you have the option of entering a passphrase. You should do this! Check out this GitHub article on that (http://goo.gl/rR1ebp)
    • The location of the public key is given.
    • The fingerprint and random art image is also generated.

    Repeat the ssh-keygen command for the other connections. Be sure to keep the filename of the key file unique and the comment unique, as well as relevant to the connection.


    Use ssh-copy-id to copy the public rsa key to the remote server. (Install via GitHub, MacPorts or Homebrew).

    ssh-copy-id -i ~/.ssh/id_rsa_userA.pub userA@somedomain.com
    • The -i flag allows you to specify the public key to upload.
    • The last argument (userA@somedomain.com) is the remote host connection info.
    • ssh-copy-id will create the authorized_keys file if it doesn’t exist and append the public key (specified after the-i flag “~/.ssh/id_rsa_userA.pub"). It’ll also update various file and folder permissions.
    • You will be required to type in the account password to access the remote server (note: this is not the “passphrase” you created at the beginning of the tutorial)

    Test the connection again by ssh command:

    ssh userA@somedomain.com

    Mac OS X will then ask for you to enter the “passphrase” you should have created when you used the ssh-keygen command. It is important to check the “Remember password in my keychain” box. By doing this, you eliminate from typing in the “passphrase” every time you login to this specific server.

    keyChainBox


    This step is not necessary, but once connected to the remote server, you can examine the authorized_keys file:

    cat ~/.ssh/authorized_keys
    
    • Within this file, you should be able to see the long key, followed by the comment included when the ssh-keygen command was executed.

    You should log out and try another ssh connection to the same server. This time, the “passphrase” is saved by Keychain Access, so you shouldn’t have type it again. If all is well, you should be instantly connected to the remote server.

    Repeat the public key transfer of all the remaining server connections.


    Next is to store all the connection info into a config file contained within the .ssh folder. This will speed up connection to the remote servers by assigning shortcut names to each unique connection.

    touch ~/.ssh/config
    vim ~/.ssh/config
    
    • The file doesn’t exist, so I’m using touch command to create the file.
    • I’m using Vim to input the connection info.

    For demonstration purposes, the following contains basic connection info for two different accounts. There is a lot that you can put into the config file, but I only limited it to basic connection info.

    Host userA
      HostName somedomain.com
      User userA
      IdentityFile ~/.ssh/id_rsa_userA
    
    Host userB
      HostName anotherdomain.com
      User userB
      IdentityFile ~/.ssh/id_rsa_userB
    
    • Host userA and Host userBis are used for pattern matching and applies the declarations that follow it (note the indentation of the lines that follow it). userA and Host userB are the names I choose for their unique connections. This will also be used when you remote connect to the server. It’s the shortcut name, so keep this name unique.
    • HostName somedomain.com and HostName anotherdomain.com states the domain of the remote servers.
    • User userA and User userB states the user account to the corresponding remote server.
    • IdentityFile ~/.ssh/id_rsa_userA and IdentityFile ~/.ssh/id_rsa_userB states the specific private rsa key.
    • More info about what can go inside the config file can be found here http://goo.gl/FEF1a5 or by checking out the manual pages in terminal (man ssh_config)

    That’s pretty much it. You can then quickly connect to the remote server, without inputting any password by typing in the connection type (ssh, sftp, etc) followed by the shortcut name as listed in the config file — the one after “Host“. Here are some connection examples:

    • sftp userA
    • ssh userA
    • sftp userB
    • ssh userB
    factory image errors

    Android errors: archive does not contain ‘boot.sig’ & archive does not contain ‘recovery.sig’

    I tried updating my Nexus 5 with the latest Lollipop 5.0.1 version. My phone is rooted, so I can’t use the OTA (over-the-air) updater. I attempted to use the same process that I used to update from Kit Kat (4.4.4) to Lollipop 5.0. I’ll recap the process:

    1. I downloaded the 5.0.1 factory image (hammerhead) from https://developers.google.com/android/nexus/images
    2. unpackaged the .tgz file
    3. executed the flash-all.sh program (note: I’m on a Mac)

    During step three, I encountered a problem:

    archive does not contain 'boot.sig'
    archive does not contain 'recovery.sig'
    fastboot(99706) malloc: *** mmap(size=1006034944) failed (error code=12)
    *** error: can't allocate region
    *** set a breakpoint in malloc_error_break to debug
    failed to allocate 1005027540 bytes
    error: update package missing system.img

    I thought this was due to my phone being encrypted. I tried to troubleshoot, but I ended up soft-bricking my phone. I got myself up and running by flashing the Kit Kat 4.4.4 factory image. I also reverted back to the 5.0 Lollipop backup I made before attempting the update. I later figured out, this is not an encryption issue (I was able to update my encrypted Nexus 7 to Lollipop 5.0.1 using flash-all.sh program).

    From a forum post on XDA (link here) suggested flashing the files within the image-XXX.zip individually (comment from manasgirdhar). I found another forum that clearly state the steps and flashing order of factory images. The steps are found here (drill down to “Method 2”). Quick recap of the process:

    1. expand the image-hammerhead-lrx22c.zip file
    2. flash the bootloader.img file
    3. flash the radio.img file
    4. flash the system.img file
    5. flash the userdata.img file
    6. flash the boot.img file
    7. erase the cache
    8. from the phone, boot into Android recovery
    9. from recovery, select “Wipe data/factory data reset”
    10. reboot

    I got hung up on step 9. I held down the Volume Up + Power buttons too long and ended up rebooting to the system. The system won’t boot until you do the data wipe step. The trick is to push the Volume Up + Power buttons simultaneously or, push and hold Volume Up, then press the Power button, making sure not to hold the buttons down too long. If you get stuck in the boot animation, just boot back up into bootloader (hold down: Volume Up + Volume Down + Power), then continue with step 8.

    As with any system mod you perform on your phone, you and only you are responsible for the outcome. So, please be very careful. If you do not understand how to flash a file from your computer to your Android phone, then you shouldn’t attempt to do any of the stuff I’ve posted here. I posted procedural steps not literal computer commands. Simply copying and pasting the steps into a command prompt will not work. If you decide to proceed with “Method 2”, please follow the procedure thoroughly as stated in the XDA forum post.

    Squeaking Noise & DIY Cowl Removal on 2006 Scion tC

    I had a crack on the windshield that required replacement. I filed my claim with my insurance company and found an auto glass shop through Yelp. I wanted to get this resolved as soon as possible, but the weather forecast would make this extremely difficult. I don’t have a covered driveway, so I opted to get this replaced at the auto glass shop location.

    crack on windshield

    crack on windshield

    crack on windshield

    crack on windshield

    crack on windshield

    crack on windshield

    long crack on windshield

    The crack on the windshield is about 10.5″ long

    Shortly after the install, I started hearing a high pitched squeaking noise. This is only really apparent on rough roads. There’s a lot of construction going on near my home, so rough roads are more the norm than the exception.

    I thought this was due to the replacement glass. It could be rubbing on the frame or some other part of the cowl area (the perceived location of the noise). I checked the cowl (pushed on in it from the outside) and it seemed to have some play/movement. Could this be the cause?

    I called the auto glass shop. We scheduled to have an on-sight visit. The plan was to re-seat the replacement glass (Pilkington Solar Laminated AS-1 DOT177 M65).

    Pilkington replacement windshield

    Pilkington Solar replacement windshield

    I drove the technician around, using the same route as posted in the previous video, so he could hear the noise first hand. When the windshield was removed, there appeared to be no apparent wear; no unusual shavings, highlights, etc. The technician banged on all components near and around the windshield frame. He was unable to replicate the noise. He reinstalled the windshield.

    I let the car sit for awhile so the adhesive could properly set and cure. Later that night, I heard the same noise, on the same road conditions. I did some searching and found a forum that suggested adding foam to the cowl area. The cowl was left alone during the reinstallation of the windshield. This is the video of the foam installation on the cowl.

    That didn’t fix it. I then tried adding foam to the inside of the car, between the glass and the dashboard. Again, targeting the area where the noise is coming from. Still no fix.

    The noise is coming from the center part of the cowl area. We ruled out the cowl and the engine compartment in general. Therefore, the noise must come from the other side of the firewall. I checked the radio. I pushed on the upper part (as highlighted in yellow in the picture below). I drove the same route, and guess what?… that’s it! The radio housing and/or the center vent is causing the noise. Something is loose back there.

    Scion tC stock radio

    highlighting where I pushed on the stock radio

    This is good news. The noise is more of an annoyance. It doesn’t effect the running of the car, or the convenience of cabin (air, radio, etc). Nor does it effect the safety of the car; it’s not windshield related. This is an annoyance I’ll learn to live with. I’m not willing to pay for the fix, nor am I willing to personally take the dash apart.