Tuesday, June 3, 2014

How to network between to VirtualBox virtual machines

How to network between to VirtualBox virtual machines


The problem is that the default NAT networking assigns every machine 10.0.2.15.
NAT works well for Internet access, but not to connect to other virtual machines.

Change the Network adapter to Bridged and then select an active adapter from the host on both guests.
Configure each guest with a unique address that is on the bridged network.
Bridged will allow for virtual machines to connect to each other, but not necessarily to the Internet.

Configure two interfaces: one NAT and one bridged for the best of both worlds!

Thursday, September 12, 2013

Bash Shell Math

While the bash shell can only do integer arithmetic, it can do it in several ways:
Double Parenthesis, Dollar Square Brackets and the let statement.

Double Parenthesis

x=$(( 5 * 3 )) ; echo $x
15

y=$(( $x / 4)) ; echo $y
y=$(( x / 4)) ; echo $y # dollar is optionaly
# Floor division rounds down always

Increments/Decrements
y=0
((y++)) ; echo $y
1
((y--)) ; echo $y
0
((++y)) ; echo $y
1
((--y)) ; echo $y
0
((y+=2)) ; echo $y
2
((y-=2)); echo $y
0

Different Base Numbers
x=$((2#0101)) ; 
echo $x
5
x=$((16#ff)) ; echo $x
255
Also:
echo $((0xff)) # hexadecimal
255
echo $((0Xff)) # hexadecimal
255
echo $((077)) # octal
63


Dollar Square Brackets

let Statement

The let statement is special in that expressions can dereference the value of a variable without using the dollar symbol. For example,
ec
let x=3
let y=4 + x
echo $y
7

expr Command Substitution

x=`expr 3 + 4`


Ad Word Soup: Decoding the acronyms CPA, CPC, CPI, CPM, CTR

Ad Word Soup: Decoding the acronyms

Others may go into greater detail, but here's what the acronyms mean that are used in on-line advertising.

CPA - Cost Per Action

CPA is cost per action or payment for when user acts upon an ad

CPC - Cost Per Click

CPC is cost per click or payment for when a click on an ad occurs

CPI/CPM - Cost Per Impression(s)

CPI is cost per impression
CPM is cost per 1000 impressions

CTR - Click Through Rate

CTR is the number of clicks divided by the number of impressions times 100. 
It is normally expressed as a percentage. For example,
If 5 people click out of 100 impressions, then the CTR would be 5%. 

Click Fraud

Fraud is a problem, as well as people gaming the system 

What Advertising Model To Use


Saturday, May 25, 2013

Verizon Samsung Galaxy S4 Root, Recovery, ROMs, More...

Verizon Samsung Galaxy S4 Root, Recovery and ROMs

Root

The  Samsung Galaxy S4 has only been out on Verizon a few days, and it's already been rooted. The http://www.sxtpdevelopers.com site already has a good forum going.  Despite Verizon's attempt to harden the kernel to prevent the Motochopper exploit that is used from working, the exploit works by first loading an earlier version of the kernel, then running the exploit, then reloading the latest kernel.

Recovery

There's a new set of tools for flashing kernels and recoveries that works around the locked bootloader on the Galaxy S4 called Loki. While I've not downloaded the source code yet to use it, it's my understanding that the recovery installed by GooManager uses this set of tools.

So, after you've got root, go get GooManager and you can install the Team Win Recovery Project (TWRP) recovery.

The sex tape developer's site also has a CWM recovery under development as discussed in this forum. It looks like in order to try this one, you'll need to download and build the Loki tools.

ROMs

Perhaps the most important ROM of all is out at the sex tape developer's site, the stock unrooted original ROM. At this point, there are several other proof of concept ROMs under development there as well, but nothing that looks ready to really use yet.

Of course, if you want to go looking for ROMs, a good place to go is always the xda-developers.com site. Today, the Verizon Samsung Galaxy S4 forum is at the top of the list! So far, I've only one ROM here, a stock rooted odexed and deodexed.

Kernels

The kernel from Faux123 is out for all US and International versions of the Galaxy S4. I just downloaded from this thread.

Google Wallet

Similar to getting Google Wallet working on the Samsung Galaxy S3, the S4 requires a /system/build.prop hack, flashing a deodexed ROM, loading the Xposed framework, and applying an Xposed framework patch. 

This XDA thread was started for T-Mobile, but can be followed except that before beginning you will want to download a deodexed ROM for your carrier of the device, like the Verizon one mentioned in this thread from XDA Developers. Basically, this will make your phone look like a Sprint Galaxy S4 device, which has access to the app. Once the app is installed and working, you can revert your build.prop back to the original.

Repositories

I stumbled upon this repository which has many of the files that you need, not just for the S4, but many other Samsung devices as well.

Wednesday, May 1, 2013

GRUB 2 Bootloader

While GRUB Legacy received it's last update in 2005 to 0.97, it will probably be around for several more years. Meanwhile, GRUB 2 has begun to replace GRUB in progressive distributions like Ubuntu and Fedora. The new GRUB, GRand Unified Bootloader, offers several advantages:
  • Dynamically loaded modules
  • Non-ASCII character support
  • Ability to boot from partitions inside of Logical Volume Management (LVM) or RAID
  • Ability to work with many architectures without a PC BIOS
As in previous posts, what I will describe pertains to Fedora. Notably, Fedora uses /boot/grub2/grub.cfg instead of /boot/grub/grub.cfg that I've seen mentioned for Ubuntu-based distributions.
Previously, GRUB stored it's components under /boot/grub and was primarily configured with either /boot/grub/menu.lst or /boot/grub/grub.conf.

Now, GRUB 2 uses several locations for it's files:
  • /boot/grub2
    • Contains many module files
    • grub.cfg which should not be edited manually
    • grubenv another configuration file which should not be edited
  • /etc/default/grub
    • contains the entries for creating a default boot entry
    • typically where customization will be done
  • /etc/grub.d directory
    • contains scripts that are run by grub2
    • scripts can be customized or added
    • Contains the following executable scripts: 
      • /etc/grub.d/00_header
      • /etc/grub.d/10_linux
      • /etc/grub.d/20_linux_xen
      • /etc/grub.d/30_os-prober
      • /etc/grub.d/40_custom
      • /etc/grub.d/41_custom
      • /etc/grub.d/90_persistent
  • /usr/lib/grub/directory
    • Stores a couple of library files
  • /sbin/grub2-mkconfig
    • Used to regenerate the /boot/grub2/grub.cfg
Here's what the /etc/default/grub looks like in Fedora 16:
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
# GRUB_TERMINAL="serial console"
# GRUB_SERIAL_COMMAND="serial --unit=0 --speed=9600"
GRUB_CMDLINE_LINUX="quiet rhgb"
GRUB_DISABLE_RECOVERY="true"


There are just a few of entries in this file that might need customization:
The GRUB_TIMEOUT is how many seconds before the default is booted. Some people might like more time than this, particularly if dual booting operating systems.

The GRUB_CMDLINE_LINUX contains the parameters that are passed to the Linux kernel. Occasionally, some systems might require additional parameters be passed, so this might also be customized.

Also, the GRUB_TERMINAL and GRUB_SERIAL_COMMAND might be uncommented to provide a serial console.




Friday, April 5, 2013

Installing Google Wallet on Verizon Galaxy S3

No fancy installer is necessary to get Google Wallet to work on the Galaxy S3 on Verizon, on a few minor edits to the /system/build.prop are required. Installing Google Wallet is possible on the Verizon Galaxy S III, if your phone appears as a Galaxy Nexus. Assuming you have rooted your phone, and installed a decent version of busybox, then you can execute in a root shell on the phone(at your own risk).:

cp /system/build.prop /mnt/extSdCard/build.prop.original
mount -o remount,rw /system

Use sed to edit the /system/build.prop
sed -i 's/ro\.product\.model.*/ro\.product\.model=Galaxy Nexus/' /system/build.prop
sed -i 's/ro\.product\.name.*/ro\.product\.name=yakju/' /system/build.prop
sed -i 's/ro\.product\.device.*/ro\.product\.device=maguro/' /system/build.prop
mount -o remount,ro /system
reboot

or use vi to make the following changes in /system/build.prop from:

ro.product.model=SCH-I535
ro.product.name=d2vzw
ro.product.device=d2vzw

to

ro.product.model=Galaxy Nexus
ro.product.name=yakju
ro.product.device=maguro

Save your changes (:wq)
mount -o remount,ro /system
reboot

With the modified build.prop can install Google Wallet from the market.
When the installation is finished and you have successfully configured Wallet, 
you can revert to the original /system/build.prop with:

mount -o remount,rw /system
cp /mnt/extSdCard/build.prop.original /system/build.prop
mount -o remount,ro /system
reboot

Monday, March 18, 2013

Windows 8 and Linux on a Toshiba Satellite Laptap

 Windows 8 and Linux on a Toshiba Satellite Laptap

About a week ago, I got a new laptop: a Toshiba Satellite C855D-S5351. With the $50 rebate and $120 instant savings available on it at Office Depot, I thought it was going to be a great deal for $329. Perhaps, if I only wanted to run Windows 8 on it, I would be satisfied, but because I also want to run Linux on it, I've had to struggle to get a few things working.

First, in order to make Windows 8 livable, I would recommend installing Classic Shell. You can download it from  http://www.classicshell.net/. As shown in the screenshot, Classic Shell not only provides the Start Menu that is missing in Windows 8, but a greatly improved Windows Explorer. The menu can even look like the version of a Windows Start Menu that you like the best. I really like locating things where they always have been in Programs or the Control Panel, as well as the Windows key on your keyboard will now activate this menu. When you want to go to the Windows Metro look, you can either Alt-tab to the App, or move over the right side of the screen, and activate the Start icon.

Preparing to Install Linux on a Windows 8 System


Before you do anything to your hard disk, you should make a "Repair Disk Windows 8 64bit". Point to upper right, click the Search icon, select Settings, and then click in the box to type "drive". Choose the option to create a recovery drive. It can be a USB disk, CD or DVD.  Warning: If you don't create a Repair Disk, then Windows 8 may not boot and it may not be easy to fix.  You should also create a new Repair Disk after successfully completing any changes to your hard disk.

Although I didn't make the recovery disk until after I got in trouble installing Fedora 17, I was able to get Windows 8 to boot after installing Linux. I was able to get it to recover by using a Live GParted CD. After booting the CD, I right clicked the Windows Recovery partition, and I set it the flags on it to include "boot". You may not be so lucky!

Create Space to Install Linux Using Disk Management

In order to get Linux installed to begin with, I first had to create some space on the laptop. I searched in Settings for "Disk Management". Start the Disk Management tool with the descripton "Create and format hard disk partitions".

Select the largest partition and right click to choose to shrink it.

At minimum, you will want to shrink it by at least 10Gb, but with a 640Gb hard drive, I was able to shrink mine by about 400Gb.

Next, to be able to boot the DVD to perform an install, I used the following procedure to switch to BIOS, disable Secure Boot, enable CMS (compatiblity booting), and boot an install DVD.

At first I tried installing CentOS 6, and it succeeded nicely, but without ethernet support by default. I never got wireless working, although I think it may be possible using the compat-drivers discussed below.

When I quickly tired of the lack of available current packages from CentOS 6 (and other related repositories), I wanted to upgrade to Fedora. I tried the latest Fedora 18, but unfortunately, the brand new installer failed. So, next I tried the Fedora 17 DVD install and it succeeded. I was able to get ethernet, wireless, bluetooth, radeon, and other drivers working successfully.

Booting From Windows 8 to Linux

After booting, click the screen or log out of your account
Click the power icon in the lower right corner and choose Restart
Press F2 when Toshiba logo appears
Use arrow keys to navigate to Security menu
Go down until you arrive at Secure Boot
Press Enter to change the value, use arrows to change to Disabled, press Enter to go back
Up to the top, over to the Advanced menu
Down to System Configuration, and press Enter.
Down to Boot Mode
Press Enter to change to value to CMS Boot, and Enter to go back. (Press F10 and Enter)
Press Escape to go back to the top level menus.
Go up and over to the right to the Exit menu
Select Exit and save changes

When you want to come back, then follow this procedure:

Booting From Linux to Windows 8

Restart
Press F2 when Toshiba logo appears
Over to the Advanced menu
Down to System Configuration, and press Enter.
Down to Boot Mode, and press Enter
Use arrow keys to change to value to UEFI Boot, and press Enter
Press Escape to go back to the main menus
Go up and over to Security menu
Down arrow until you arrive at Secure Boot, and press Enter
Use the arrow keys to change the value to Enabled and press Enter  (Press F10 and Enter)
Go up and over to the right to the Exit menu
Select Exit and save changes
Boot into Windows 8

Ethernet networking

The Atheros ethernet device is shown on the PCI bus with lspci -nn as:
01:00.0 Ethernet controller [0200]: Atheros Communications Device [1969:1090] (rev 10)
There is no driver for this device yet in the kernel,  although one is proposed according to http://www.linuxfoundation.org/collaborate/workgroups/networking/alx.

From this document I found the source that is used to make the alx.ko kernel module needed for wired networking. The procedure there will only enable the ethernet driver, but not the other compat-drivers. Once built, this alx kernel module worked well in Fedora.

If you only want ethernet support then the procedure to build the module with the compat-drivers download is:


./scripts/driver-select alx

make

sudo make install

Making (Almost) All the compat-drivers 

Since the radeon driver is already working in Fedora, and the one from the compat-drivers doesn't work  so well, I didn't want that driver to be built and installed. So, I commented out building the radeon driver in the   drivers/gpu/drm/Makefile.

I did want to have the wireless driver built, but there was a problem in the source I downloaded with building another wireless driver (wil6210), so building all the drivers wasn't working. Since I didn't need this driver, I commented out building the wil6210 driver in ./drivers/net/wireless/ath/Makefile, as explained below.

Getting Wireless and Wired Ethernet Working 

The Toshiba Satellite C855D-S5351 laptop that I using has a Realtek Wireless network interface which uses the rtl8723ae kernel module as a driver. This driver is also not included in the main stream kernel,, but is a part of the compat-drivers package.

In order to build everything except the radeon driver and the wil6210 wireless driver that refused to build, I made the following changes:

First, to not build the radeon driver, the file ./drivers/gpu/drm/Makefile had to have the line changed  from:
obj-$(CONFIG_COMPAT_DRM_RADEON)+= radeon/
to by adding a # at the beginning of the line:
#obj-$(CONFIG_COMPAT_DRM_RADEON)+= radeon/


Second, in the ./drivers/net/wireless/ath/Makefile, the following line originally appeared as:
obj-$(CONFIG_WIL6210) += wil6210/
To stop building this driver a # was added to the beginning of the line like:
#obj-$(CONFIG_WIL6210) += wil6210/


Once these changes are made to the two Makefiles, then you are ready to build and install the drivers with:
make
sudo make install

Centos/Redhat

Although I had no success getting the compat-drivers to be built under Centos or Red Hat Enterprise Linux, I found a couple of potential solutions. There is a repository compatible with RHEL that exists at http://people.redhat.com/sgruszka/compat-wireless.repo.

Also, there is the "El Repo" repository for the ethernet driver, and instructions for configuring this repository at http://elrepo.org/tiki/tiki-index.php. Using another Internet connected machine, I did successfully use this repository to download the kmod-alx driver and get it to work with Centos 6.

Fedora 17

Installation of Fedora 17 did present one challenge. The installer would not continue past custom partitioning (I wanted to preserve my /home partition). It complained about not having a BIOS Boot partition for Grub 2. The installer would automatically create this partition in automatic partitioning mode, but provided no way to do it manually in the custom partitioning mode.

With UEFI, systems don't use a "MS-DOS Partition Table" on the hard drive, instead they use "Guid Partition Table" or GPT type. The partitioning tool fdisk does not work with GPT partitions, so something like parted or gparted needs to be used instead. Since parted can be very challenging and unforgiving, I decided against using it, even though I could access it from the installation shell.

The solution I used instead to create a special partition with the boot_grub flag set was a Live CD version of Gparted from http://gparted.sourceforge.net/download.php. Once the CD was booted, I  created a 10Mb partition, and right-clicked it to set the boot_grub flag on it. Once this partition existed, then Fedora 17 was able to use custom partitioning successfully during installation.

Windows 8 

After all seemed well with the completed Fedora installation, I attempted to boot back to Windows 8. Unfortunately, after following the above procedure to go back to UEFI and Secure boot, I encountered an error message about not having any bootable partition. GParted Live CD to the rescue again! Using GParted, I right-clicked the Windows Recovery partition, and set it's flag to boot, and applied the change. Surprising Windows 8 booted right back up without any apparent issues.

Conclusion

It is possible to use both Windows 8 and Linux on the Toshiba Satellite C855D-S5351 laptop. Although I disabled Secure and UEFI booting in order to make it possible. Next, I may explore the possibility of installing Linux using Secure UEFI booting, as several distributions claim that capability.

Soon, the Atheros alx kernel module for wired ethernet networking should be in the mainstream kernel. Reportedly, the Realtek Wireless rtl8723ae kernel module may be reworked and merged with other similar modules for Realtek Wireless devices, so it may also be available in the mainstream kernel in the near future. For now, there's compat-drivers, compat-wireless, and various repositories around to enable the use of both wired and wireless networking.




How to create a Custom GNOME 3 Launcher

How to create a Custom Gnome 3 Desktop Launcher

Creating a custom launcher icon to put on the Gnome 3 Desktop dock called "Dash" is fairly easy, if you know what to do.

Create a ".desktop" file with the command: 
gnome-desktop-item-edit ~/Desktop/ --create-new MYAPPNAME.desktop

Now, copy it to /usr/share/applications as the root user or using sudo:
sudo cp MYAPPNAME.desktop /usr/share/applications

Then, the application can be found in the overview mode of Gnome 3 (when you press the Windows key and start typing "MYAPPNAME". Right-click on the found icon and choose "Add to Favorites" or just drag it over into the dock ("Dash").

Monday, November 5, 2012

Jelly Bean Leak for Verizon's Samsung Galaxy S III

Jelly Bean Leak for Verizon's Samsung Galaxy S III

On November 3rd, 2012, I saw that there was a Jelly Bean leak for Verizon's Samsung Galaxy S III published at the XDA Developer Verizon Galaxy S III Android Development Forum. I was so excited to try it, that I even downloaded the 800+ MB file from the [ROM][JB] - Stock Root De-Odex - I535VRBLI5 (vzw leak) thread on my battery while on a layover in Chicago O'hare. That night, after settling down a bit, I successfully installed the zip using the TeamWin's Recovery Project (installed from the GooManager app). 

Before attempting to load this custom ROM on the device, you are warned that you are voiding your warranty and face the risk of bricking your device if something goes wrong. You will need to have a Verizon Samsung Galaxy S III rooted, and have a custom recovery image installed in order to load the ROM. You will have to unlock the bootloader. You should backup the IMEI of your device, as it has been known to be corrupted upon installing custom ROMs. All of these topics are discussed in threads in the XDA Developer Verizon Galaxy S III Android Development Forum. Please read the threads carefully and backup your IMEI and current ROM to your external SD card, so everything can hopefully be restored in the event of a problem.

What's new?

Jelly Bean definitely feels faster and smoother with almost no lag noticeable. If you do a factory reset, you'll notice that new helpful tips appear more often than in Ice Cream Sandwich. I found out the hard way that performing a factory reset does erase the internal SD card, so be sure to put any of your backups on the external SD card, or copy them to your computer for safe keeping.

While Google made numerous changes in Jelly Bean, what I noticed was the following:

Notifications

The date and time are now clearly displayed at the top of the notification shade. The display brightness slider and auto checkbox are displayed below the toggles. The notifications from SMS and MMS now show the full message, if possible, and other apps show more detail than before. Now, if you press-hold, then the App Info can be displayed to take you to manage the application.

Camera

The camera now includes the following effect filters: Cold Vintage, Warm Vintage, Posterize, Solarize, Green Point, Blue Point, Red-yellow Point, Washed Out, Black and white, Sepia, and Negative. These filters are applied in real-time as the image is recorded or displayed.

The shooting mode for the camera now has an improved HDR mode and a new Low light mode, which allows for much better indoor shots.

Camcorder

The camcorder now permits video recordings to be paused, resumed, or stopped. The camcorder supports the same filters as the camera.

Pop Up Video

When playing back a video in the Video Player Pop Up, the video can be paused and re-sized up to the width of the screen in portrait mode.

Lock Screen Menu

The menu that appears when you press the power button now has a much more functional layout, particularly for switching sound modes.

Keyboard

The Swype keyboard is now the default. There is also a Samsung keyboard and Google voice typing available.

What's custom?

This ROM has a couple of notable modifications, the Google Now application instead of S Voice, and it seems to be configured to use global networks.

Conclusions

After running this leaked ROM for the last couple of days, I'm glad that I loaded it because it is more visually appealing and works faster than the stock ROM. The improved camera and camcorder make the biggest difference to me, but I also really like the expanded notifications and quick access to control the display brightness. I am quite pleased with it's stability. Only when executing Gscripts to enable Google Wallet, did I have any Activity Not Responding (ANR) issues. I was able to get the hacked version of Goggle Wallet to work, though. Also, the Extra Apps for Samsung S III installed fine.

I haven't spent too much time with it yet on the road, so I haven't had a chance to really put it's battery performance to the test, but from what little time I've not had it connected to my computer, it doesn't seem to drain very quick.

Saturday, September 22, 2012

iPhone 5 makes people act like Apple Zombies as Jimmy Kimmel shows

Apple Fans act like Zombies

Watch "First Look: iPhone 5 on YouTube from the Jimmy Kimmel Show
Some people are just going to think the new iPhone is the best no matter how wrong they are about the facts. Watch these people fawn over an iPhone 4S thinking it is the new iPhone 5!

But here is why the Samsung Galaxy S III is better than an iPhone 5

Friday, September 21, 2012

Why the Samsung Galaxy S III is superior to the iPhone 5

Why the Samsung Galaxy S III is superior to the iPhone 5

  1. Bigger display - not only is the display bigger, but it is smarter. The front facing camera checks for your face and if it sees it, then it will not cause the display to shut off due to a timeout. Even though Apple has a slightly higher pixel per inch (PPI) density, it is imperceptible to the user unless the device is only a inch or two from the user. Only apps specifically designed for the iPhone 5 will even be able to use the full screen, and most apps will appear letter-boxed.
  2. S IIIiPhone 5
    720 x 1280640 x 1136 
    4.8 inch4.0 inch
    306 ppi326 ppi
    Full screen appsLetter-boxed apps

  3. Battery Life - batteries are easily exchanged by the user, and many options are available for purchasing them, including even larger batteries. Also, even the reported talk time on an iPhone is less, probably due to it's smaller capacity.
  4. S IIIiPhone 5
    User swappableNot user servicable
    7.98Wh5.45Wh

  5. Internal RAM - the S III (in the USA) has twice as much RAM available which allows the user to be able to have more applications loaded simultaneously in memory.
  6. S IIIiPhone 5
    2 Gb1 Gb

  7. Internal Storage - while the S III does not yet have a model with 64 Gb of internal storage available, one is planned for the future. Apple charges twice as much per Gb for increasing the memory beyond the 16 Gb of the standard model.
  8. S IIIiPhone 5
    16 Gb ($99-199)16 Gb ($199)
    32 Gb ($249)32 Gb ($299)
    64 Gb (planned)64 Gb ($399)

  9. External Storage - Only Samsung gives the user the freedom to add external storage. This permits being able to effectively expand the storage of the device to much more than than Apple offers. At this time, the maximum storage on the S III is 64 Gb external + 32 Gb internal, for a total of 96 Gb. Eventually, a total of 128 Gb might be available from Samsung.
  10. S IIIiPhone 5
    16, 32, 64 Gb micro SDNot Available

  11. NFC - Near Field Communications (NFC) allows the user to communication with point of sale devices to make payments, initiate transfers of data, and automate actions by interacting with NFC tags.
  12. S IIIiPhone 5
    Included as part of standard batteryNot Available
    Available from 3rd party batteriesNot Available

  13. Open Ecosystem - whether it's to watch movies, listen to music, or get apps, Apple forces the user to get their media and apps from Apple. This is the biggest difference between not just the S III, and the iPhone 5, but between any Android device versus any Apple iOS device. Even if Apple were to make a device as good as or even better than the S III, I would not buy an Apple device for this reason.
  14. AndroidiOS
    Any app store allowedOnly Apple App store
    Apps are able to be user installedNot allowed
    Music and Video DRM freeOnly permitted from iTunes

Conclusion

Apple has failed to innovate and create a device with the iPhone 5 that is superior to the Samsung Galaxy S III, or many other top-end Android devices. Their offering of added 4G LTE and a larger screen is something I had on a Droid Bionic more than one year ago. Their replacement of Google Maps and YouTube apps with a buggy and less sophisticated Apple Maps, and the expectation that you will watch YouTube in a browser just shows how they further want to block their users from anything not Apple. Their continuing litigation over ridiculous "innovations" like rounded rectangles, and obvious touch screen gestures and responses just shows how void of any real innovation Apple has become.

So, unless you pledge allegiance to the being part of Apple trying to take away your freedom, the choice is obvious. It does not take a "Genius" to see that the Samsung Galaxy S III is superior to the iPhone 5 in the many ways that really matter to the user. For that matter, Android offers many other devices better than the new iPhone 5, just take a look at some of the other devices offered by Samsung, Motorola, LG, Pantech, and HTC.

If you aren't brainwashed and fall to your knees at the alter of Apple, then you'll find that the Samsung Galaxy S III is not only a far better device for the price, but you'll be free from the Apple prison of what they call an ecosystem, which is nothing more than vendor lock-in at outrageous prices for what they tell you is what you want, but not what really matters.

Regardless, as Jimmy Kimmel shows, too many people are always ready to believe that the newest from Apple is the best when it isn't: iPhone 5 Apple Zombies

Saturday, August 25, 2012

Extra Apps for Samsung Galaxy S III

Extra Apps for Samsung Galaxy S III

With all the amazing apps on the Samsung Galaxy S III, it may be hard to believe, but Samsung has even more apps available that will work on this device. In order to be able to install these apps, first you need to go to http://www.samsungapps.com. If you don't already have a Samsung user account, then sign up, otherwise, sign in. Next, if you click the Support link, then there will be a sidebar on the left that will allow you to install the Samsung Apps app

Here's the wrinkle, the Galaxy S III is not listed, but if you download the app for the phone (not the tablet), it works! Once this application is installed on the device, you can use it to install the other apps. To see the ones specifically designed by Samsung, click the More Services tile in the lower right corner. Here's the list of the apps that you will find:
  • Photo editor - crop, resize, decorate, or add special effects
  • Kies Air - manage your device from your broswer
  • Application monitor - a widget to display the number of open apps and start Task Manager
  • MiniDiary - make notes, add photos and locations on the go
  • KiesCast - podcast manager for audio and video
  • S Health - tracks your activities, blood glucose, blood pressure, food, and weight 
  • My Story - provides templates to create media rich correspondence
  • Readers Hub - ebook reader that won't work if you have rooted your device
  • Family Story - enables sharing with just family of photos, messages, and events
  • Flipboard - innovative browser for social sites like Facebook and Twitter
Update: I'm sure there is many more other good apps to be found at SamsungApps.com. One other good one that I also found is Video maker, which allows you to decorate a video with a frame and add voiceovers.

Gone Google Again: Apps To Play

Gone Google Again: 

Apps To Play

Most of my apps are Google integrated. Of course, GPS Map has totally Gone Google. Over the last few days, I've created another Android app that has gone Google again! My newest Gone Google app is Apps To Play, and it integrates only with the Google Play Store app, or a browser at this point.

This app is intended to make searching the Google Play Store for Android apps easier. Starting with some of the URIs found at https://developer.android.com/distribute/googleplay/promote/linking.html, it creates an intent to let you start either a browser or the Google Play Store app. Unlike the Google Play Store app, it permits searching directly by developer. For some reason, trying to search the Google Play Store app for the Best Selling in Games collection fails, but it succeeds in the browser.

One of the features that makes using the app convenient is that it stores in a database any unique searches that are typed in the AutoCompleteTextView for app classpath, developer, and keyword searches. I've made it even easier to search for "Google, Inc." as the developer, as well as "WrightRocket", by populating the database used for the AutoCompleteTextView developer names.

I considered populating the database used for the AutoCompleteTextView app classpaths with all the Google applications, but there are too many to be practical. Some also may not be available in certain markets, or even available from the Play Store. Anyway, here are the ones that I have installed with google in their classpath that I suspect are from Google:

com.froogloid.kring.google.zxing.client.android
com.google.android.apps.adk2
com.google.android.apps.androidify
com.google.android.apps.authenticator2
com.google.android.apps.blogger
com.google.android.apps.books
com.google.android.apps.chrometophone
com.google.android.apps.currents
com.google.android.apps.docs
com.google.android.apps.enterprise.dmagent
com.google.android.apps.finance
com.google.android.apps.gesturesearch
com.google.android.apps.giant
com.google.android.apps.googlevoice
com.google.android.apps.iosched
com.google.android.apps.magazines
com.google.android.apps.maps
com.google.android.apps.offers
com.google.android.apps.orkut
com.google.android.apps.panoramio
com.google.android.apps.plus
com.google.android.apps.reader
com.google.android.apps.schemer
com.google.android.apps.shopper
com.google.android.apps.translate
com.google.android.apps.tvremote
com.google.android.apps.unveil
com.google.android.apps.uploader
com.google.android.backup
com.google.android.feedback
com.google.android.gm
com.google.android.googlequicksearchbox
com.google.android.gsf
com.google.android.gsf.login
com.google.android.location
com.google.android.maps.mytracks
com.google.android.marvin.intersectionexplorer
com.google.android.marvin.talkback
com.google.android.music
com.google.android.partnersetup
com.google.android.setupwarlock
com.google.android.setupwizard
com.google.android.stardroid
com.google.android.street
com.google.android.syncadapters.bookmarks
com.google.android.syncadapters.calendar
com.google.android.syncadapters.contacts
com.google.android.talk
com.google.android.tts
com.google.android.videos
com.google.android.voicesearch
com.google.android.youtube
com.google.android.ytremote
com.google.earth
com.google.zxing.client.android

To find the apps by Google, to get going Gone Google yourself, use the Developer search for Google Inc. Not missing an opportunity to promote my own applications, however, I did populate the database with the app classpaths for my own applications:

com.appspot.wrightrocket.GPSMap
com.appspot.wrightrocket.GPSMapPro
com.wrightrocket.appstoplay
com.appspot.wrightrocket.amazing
com.appspot.wrightrocket.kmlkmz
com.appspot.wrightrocket.timeit
com.wrightrocket.amazingmap
com.wrightrocket.appstoplay
com.wrightrocket.kmlkmz
com.wrightrocket.theshowfree
com.wrightrocket.theshow


So, go get Apps To Play on Google Play! 
Then, use it to easily find the Android apps you want, and Go Google! 

Disclaimer: I am only paid by Google in the form of sales from my Android apps, the advertising revenue generated from them, and by this and other websites that feature Google AdMob or AdSense ads.

Wednesday, August 15, 2012

WrightRocket's Raspberry Pi Links

WrightRocket's Raspberry Pi Links

While I mostly reference the links to sites I find relevant to the Raspberry Pi by looking at my Delicious bookmarks, I thought I'd make a post sharing some my links about the Raspberry Pi. Please comment below to suggest other ones to add!

Raspberry Pi Foundation




This is the main place to visit. This is where the Raspberry Pi originated. They publish relevant information on a regular basis. You can find images to download to install onto your SD card to be able to start up your RPi at this site.

Broadcom


They manufacture the SoC that powers the Raspberry Pi. This page features details about the Broadcom 2835.

http://www.broadcom.com/products/BCM2835

Raspbian

Raspbian is now the official OS for the Raspberry Pi. Raspbian was built based upon Debian, but optimized for the Raspberry Pi.

http://www.raspbian.org/

R-Pi Hub at Elinux

There is a great deal of information to be found about the Raspberry Pi at Elinux's R-Pi Hub. The have all kinds of beginner's guides, but my favorite is the information that the have about the hardware.

http://elinux.org/R-Pi_Hub

PuppyArch


PuppyArch is the Raspberry Pi version of the Puppy Linux distribution which derives from Arch Linux.    There is an image to download and instructions, but I've not tried it yet.

http://puppylinux.org/wikka/PuppiArch

QtonPi

QtonPi allows for Qt application development on the Raspberry Pi.

http://qt-project.org/wiki/Qt-RaspberryPi


AdaFruit

Accessories and hardware to go with the Raspberry Pi including cases, breakout boards, displays, and more.


Element14

A distributor of the Raspberry Pi and accessories.

Farnel

Another distributor of the Raspberry Pi and accessories.

SparkFun

Electronics parts, breakout boards and kits are featured at Sparkfun.

Saturday, August 4, 2012

Building Omxplayer for Raspbian on the Raspberry Pi

Building Omxplayer for Raspbian on the Raspberry Pi

This version of the omxplayer, is nearly identical to the one I published for Debian on the Raspberry Pi, except that it can be built for Raspbian. The same github repository serves to build omxplayer for both Raspbian and Debian. To configure the build for one or the other, the RASPBIAN variable must be set as described below in the Makefile.include.

This means that the primary differences between this and the default build of omxplayer still are:
  • Default output is HDMI (no need for -o hdmi)
  • Clears the screen and doesn't output anything unless there is an error
  • Makefiles have been customized  to perform a native build on the Raspberry Pi
  • There is the ability to install or uninstall using the Makefiles
  • There is the ability to make sources or make sources-clean to download or remove the firmware and ffmpeg dependencies
  • Everything installs under /usr/local
  • It is possible to install this pre-built omxplayer for Raspbian Wheezy or Debian Squeeze

Preparing to Build Omxplayer

  • First, make sure your firmware is up-to-date, as described in Keeping Your Raspberry Pi Fresh:
    • pi@raspberrypi:~$ sudo apt-get update && sudo apt-get upgrade
  • Install software needed to perform the update:
    • pi@raspberrypi:~$ sudo apt-get install ca-certificates git-core binutils libboost1...-dev libva1 libpcre3-dev
  • Download the script:
    • pi@raspberrypi:~$ sudo wget https://raw.github.com/Hexxeh/rpi-update/master/rpi-update
  • Copy the script to /usr/local/bin:
    • pi@raspberrypi:~$ sudo cp rpi-update /usr/local/bin/rpi-update
  • Make the script executable:
    • pi@raspberrypi:~$ sudo chmod +x /usr/local/bin/rpi-update
  • To compile this successfully, use a 240/16MB RAM split between system and GPU:
    • pi@raspberrypi:~$ sudo rpi-update 240
    • pi@raspberrypi:~$ sudo reboot
Next, make sure proper ownerships are in place, go to the local src directory, and clone the git repository for my omxplayer fork:
  • pi@raspberrypi:~$ sudo chown pi:pi /usr/local/src/
  • pi@raspberrypi:src $ cd /usr/local/src
  • pi@raspberrypi:src $ git clone https://github.com/wrightrocket/omxplayer
At this point, the pre-built omxplayer could also be installed on your system if you are using Raspbian Wheezy, Debian Wheezy or Debian Squeeze. If you wish to skip compiling omxplayer, and use a pre-built version, complete the next step, and then skip to using omxplayer:
  • sudo /usr/local/src/omxplayer/install-raspbian-wheezy
or 
  • sudo /usr/local/src/omxplayer/install-debian-wheezy
The Debian Wheezy build has been tested to work on both Wheezy and Squeeze.

Building the Omxplayer

Before building, be sure to set update the Makefile.include file for the RASPBIAN variable. If building under Debian, then RASPBIAN=0 is appropriate. If building under the Raspbian OS, then update this file where RASPBIAN=1. The RASPBIAN variable determines whether hardfp or softfp is used.
  • If you are building this under Raspbian, and not Debian, then use vi, vim, nano, leafpad or some other editor to modify the RASPBIAN variable at the top of the /usr/local/src/omxplayer/Makefile.include file to set RASPBIAN=1.
Even after getting the configuration right for building, my first few attempts failed because of insufficient RAM. This is the reason a different RAM split is used during the build process than when using the player. The build sequence is:
  • Change to the directory where the source code is located
    • cd /usr/local/src/omxplayer/
  • Next, the firmware and ffmpeg sources will be downloaded. The firmware is about 427 MB and ffmpeg is about 60MB. This step took about 16 minutes on my connection.
    • make sources
  • The longest part of the process is compiling the ffmpeg libraries. Under Raspbian this step took about the same amount of time as under Debian. This step took about 131 minutes.
    • make -f Makefile.ffmpeg 
  • After the libraries are built, then they are stripped and copied to the /usr/local/src/omxplayer/ffmpeg_compiled directory. This step is very quick.
    • make -f Makefile.ffmpeg install
  • Now, omxplayer is ready to be compiled. It should only take about 6 minutes.
    • make
  • The last step of building should create a /usr/local/src/omxplayer/omxplayer-dist.tar.gz that will be used to install omxplayer and the ffmpeg libraries.
    • make dist



Finally, install omxplayer:

  • sudo make install

Using the Omxplayer

  • To use omxplayer, the system must allocate at least 64MB of RAM for the GPU. Run the script and make sure there is a 192/64 Mb of RAM split between the system and GPU. A split of 128/128 can also be used:
    • pi@raspberrypi:~$ sudo rpi-update 192
    • pi@raspberrypi:~$ sudo reboot
  • To play videos, just execute the omxplayer script
    •   omxplayer --help
    • Options :
      -h / --help print this help
      -a / --alang language audio language : e.g. ger
      -n / --aidx index audio stream index : e.g. 1
      -o / --adev device audio out device : e.g. hdmi/local
      -i / --info dump stream format and exit
      -s / --stats pts and buffer stats
      -p / --passthrough audio passthrough
      -d / --deinterlace deinterlacing
      -w / --hw hw audio decoding
      -3 / --3d switch tv into 3d mode
      -y / --hdmiclocksync adjust display refresh rate to match video
    • pi@raspberrypi:~$ omxplayer LMFAO.mp4

Sunday, July 22, 2012

Raspbian Optimizes Raspberry Pi

Raspbian Optimizes Raspberry Pi


If you haven't checked back in at Raspberry Pi Foundation lately, you might not have noticed that there is a new recommended download for the default operating system for the Raspberry Pi. That new Linux distribution is called Raspbian.

Raspbian is also based upon Debian, but has over 35,000 software packages rebuilt to be optimized for the Raspberry Pi architecture. Depending upon what you are doing with your Raspberry Pi, this means that could have up to a 41% increase in performance.

The omxplayer, which allows viewing HD videos, comes pre-installed in this image of the Raspbian operating system. I would not recommend compiling my fork of the omxplayer for this distribution at this time, as this image uses floating point calculations differently. I have not yet tested my version of omxplayer with this distribution.

The following are instructions detail how I installed Raspian using Fedora (Linux). Putting the image of Raspian on a SD card is very similar to how other operating system images is done. There is no reason to try to expand the file system manually, as that is automated is the raspi-config provided in Raspbian.

Installing Raspian on the Raspberry Pi

By default, on the first boot it runs sudo raspi-config which is somewhat helpful except for a couple of problems. You can run this later to make further adjustments.

Running sudo raspi-config allows you to perform many common tasks like expanding the filesystem, or updating the software. However, the keyboard layout and ssh options did not work correctly for me. Other items like changing the pi user's password and resizing the filesystem were useful.

In order to get my keyboard layout right, I still found it necessary to perform:
sudo apt-get install console-data
or if I want to change settings I would use:
sudo dpkg-reconfigure keyboard-configuration


In order to get the ssh server to work, I had to do:
sudo apt-get purge openssh-server
sudo apt-get install openssh-server


Since I was out of town last week, I haven't had too much time to play with Raspbian yet, just a few hours this weekend, but so far it looks good! Please feel free to comment about your experiences with it!


After trying out Raspbian, I do find it to feel faster for operations. One big problem for me was that the included omxplayer did not work for me! I've been hard at work at getting an omxplayer build to work with the hard instead of softfp handling. So far, I've had one successful build.

UPDATE: I have now published a post on Building Omxplayer for Raspbian on the Raspberry Pi, which  allows you to either install a pre-built omxplayer that works well, or to build it yourself from source.


ModMyPi for the Raspberry Pi

ModMyPi for the Raspberry Pi


The case from https://www.modmypi.com/ finally arrived! The two pieces of plastic fit together well very nicely. Above you see the top side in red, you can also choose white, black, blue and green. The Raspberry Pi board fits firm inside the case. All but one of the ports is very easily accessed. I found the power port to be slightly recessed making it slightly more difficult to align and connect correctly.

The Top Side

Visually, there is access to the GPIO pins through small diagonal slots above them. I imagine I could easily cut the slots above the GPIO pins for full access. Slots cut to look like a power icon, and several vertical slots exist to allow sight of the status LEDs. 

The Bottom Side


The underside of the ModMyPi case has seven holes in the center in a circular pattern with two more spread out close to the edge of the long horizontal axis in the center of the vertical axis. The center group of holes could be used to provide ventilation if the two outer holes were mounted on something like the standoffs used on the bottom of computer cases to mount motherboards to the case.
Inside the bottom are plastic standoffs, so the board does not sit directly on the plastic.

ModMyPi 

I had looked into buying this case at the time that it was still going to be 3D printed. They had so many orders that they used injection moulding instead. The strong ABS plastic pieces fit together well, and I can always take the top off if I need more access. They have five different colors to choose from for both the top and bottom. Their site https://www.modmypi.com/ has all the accessories you need, as well as start-up kits. However I have no affiliation with them, other than being their first time customer.
I was very impressed by how they communicated throughout the whole process of changing the manufacturing technique as well providing estimated shipping dates. They also help support the Raspberry Pi Foundation with the sale of stickers and according to their website, "ModMyPi LTD has pledged to donate 5% of all our profits to the Raspberry Pi Foundation."

So, all in all, I'm very pleased that my Raspberry Pi has a case that is portable and functional for casual use. I'm already imagining the ultimate experimentation case or expansion board, or...


Sunday, July 15, 2012

Building Omxplayer for Debian on the Raspberry Pi

Building Omxplayer for Debian on the Raspberry Pi

UPDATE: I have now published a post on Building Omxplayer for Raspbian on the Raspberry Pi, which should be referenced now for building omxplayer on either Raspbian or Debian.This post does contain some useful links and background information that you still may find useful.

NOTE: There is a new default operating system for the Raspberry Pi that includes omxplayer. The following post, assumes that you are using the original Debian image for the SD card image of your operating system. To learn more, please see my post Raspbian Optimize Raspberry Pi.
If you want a media player that takes advantage of the GPU of the Raspberry Pi, then building omxplayer is one solution. This solution allows you to run a standard Debian operating system, but be able to take advantage of hardware accelerated video decoding. So far, this has been tested using the original Debian build for the Raspberry Pi called squeeze.

There are other ways to play hardware accelerate videos as I've mentioned in Playing HD videos in Debian on the Raspberry Pi, and OpenElec for the Raspberry Pi. This solution allows you to download the source code for omxplayer and be able to tweak it if you want to be able to do that, download the source code for ffmpeg and adjust it according to your needs, and download and use the current firmware available for the Raspberry Pi.

Omxplayer was built to be able to create XMBC for the Raspberry Pi. One implementation of XMBC is OpenElec for the Raspberry Pi. I forked a repository from https://github.com/huceke/omxplayer to make my own version of omxplayer. Here are some key differences:

  • Default output is HDMI (no need for -o hdmi)
  • Clears the screen and doesn't output anything unless there is an error
  • Makefiles have been customized  to perform a native build on the Raspberry Pi
  • There is the ability to install or uninstall using the Makefiles
  • There is the ability to make git or make git_clean to download or remove the firmware and ffmpeg dependencies
  • Everything installs under /usr/local
Be sure that you have expanded the file system, or have /usr/local/src mounted on another device besides the default root file system. My post, A bigger slice of Raspberry Pi, covers how to expand the file system, make a swap partition and how to activate it.

Also, you need to make sure all the software and firmware is updated, as discussed in my post Keeping Your Raspberry Pi Fresh.

Build omxplayer using Debian Squeeze on the Raspberry Pi

  • These instructions are very similar to what is shown on my github repository: http://github.com/wrightrocket/omxplayer. Instructions at that site may be updated more frequently than this blog post.
  • Don't startx, either use the console or ssh into the system.
  • Install dependencies for build
    • sudo apt-get install libpcre3-dev libboost-dev git fbset
  • Configure the build directory permissions and change to it
    • sudo chown pi:pi /usr/local/src
    • cd /usr/local/src
  • Get the source code for the player, ffmpeg and the Raspberry Pi firmware. Depending on the speed of your Internet connection, then this might not take more than 5 or 10 minutes if you've got a fast connection, or else you might wish that you did. 
    • git clone https://github.com/wrightrocket/omxplayer.git
    • cd /usr/local/src/omxplayer/
    • make sources
git clone https://github.com/raspberrypi/firmware.git
Cloning into firmware...
remote: Counting objects: 9517, done.
remote: Compressing objects: 100% (5218/5218), done.
remote: Total 9517 (delta 4998), reused 7998 (delta 3489)
Receiving objects: 100% (9517/9517), 391.44 MiB | 1.09 MiB/s, done.
Resolving deltas: 100% (4998/4998), done.
git clone git://git.videolan.org/ffmpeg.git ffmpeg;
Cloning into ffmpeg...
remote: Counting objects: 234992, done.
remote: Compressing objects: 100% (55205/55205), done.
remote: Total 234992 (delta 184984), reused 228269 (delta 179406)
Receiving objects: 100% (234992/234992), 59.52 MiB | 737 KiB/s, done.
Resolving deltas: 100% (184984/184984), done.
cd ffmpeg; git checkout master; git checkout 13a7bd70c8d94c5a46c14e7ac23a170b77eff52e
Already on 'master'
Checking out files: 100% (794/794), done.
Note: checking out '13a7bd70c8d94c5a46c14e7ac23a170b77eff52e'.

  • Start the ffmpeg build process, which takes forever! Not actually, the first time I ran it it took about 140 minutes on a Class 6 SD card. After upgrading to a faster Class 10 SD card, it only took about 123 minutes. Expect between two to three hours for this part to complete.
    • time make -f Makefile.ffmpeg
      • first, the configure process for ffmpeg should run
      • next, just a couple of libavdevice files are made
      • followed by many items in alphabetical order, and much like the making of laws:
      • Important milestone, cheers!
Here's the time that was reported, using a non-overclocked Raspberry Pi and a Class 6 sd card, about 2 hours and 20 minutes.

real    140m28.435s
user    132m8.420s
sys     3m32.930s

Here's the time that was reported, using a non-overclocked Raspberry Pi and a Class 10 sd card, only about 2 hours.
real    123m9.197s
user    119m56.500s
sys     2m4.130s

  • After ffmpeg builds, install these libraries, and then start the omxplayer build process, which only takes about 6 minutes
    • time make -f Makefile.ffmpeg install
    • time make
strip omxplayer.bin
real 6m11.814s
user 5m56.810s
sys 0m8.860s


After the build process has completed, you are ready to install omxplayer
  • Make the file that is able to be distributed because this is built with GPL enabled, omxplayer-dist.tar.gz
    • make dist
  • If  make dist succeeded, then you are ready to install omxplayer
    • sudo make install