• Fuhu Nabi 2 with Google Apps – Great tablet for kids and dad

    I have just bought a Nabi 2, a tablet for kids which costed me only 155€ (+ 12€ for delivery from Ireland to Belgium) although it’s a quad-core 1.3GHz Nvidia Tegra 3 processor and 7-inch 1024-by-600-pixel Capacitive Multi-Touch display running Android 4.0.

    Fuhu Nabi 2 Kids tablet
    Fuhu Nabi 2 Kids tablet

    It could be the perfect tablet for dad and kids it it was not missing the Google Play Store, which may not be installed due to Google’s policies (Nabi having its own store)… (and maybe a GPS). Fortunately, if you are not afraid of rooting the device, all the Google Apps can be installed…

    Click to Read More

    The Nabi 2 is really great and fast.

    • It connects to 802.11b/g/n Wi-Fi networks on the 2.4GHz frequency.
    • It comes with Bluetooth 3.0 integrated (useful to connect with wireless headphones).
    • It has 1GB of RAM
    • It comes with 8GB of built-in storage of which 4.49GB are free
    • It has a microSD slot to increase capacity (support 64GB microSD without issues).
    • It has a mini HDMI out for playing videos on an HDTVs at up to 1080p.
    • The battery can last up to 7h30 while running a video with screen brightness set to maximum and Wi-Fi switched on.
    • It has a 2-megapixel front-facing camera above the screen.
    • It has an accelerometer
    • It comes with a thick red rubber silicone case that can be removed but is well protecting the tablet. Really let the kids play with it without much concern 😉
    • It has a proprietary Monarch OS UI.

    It’s built by a Los Angeles-area startup called Fuhu. You will find plenty of reviews on the web looking for “Fuhu Nabi 2”.

    Unfortunately, it does not come with Google Play and generally speaking, Google Apps (“gapps”) may not be installed. This was really an hold-back for me as I have already a lot of paid softwares bought on Google Play for my Android phone that I wanted to reused them on that tablet. Fortunately, a known “exploit” of Android has been used to root the device and add all the Google Apps as explained on XDA-developers forum.

    How to root the Nabi 2 is really best explained here (EDIT: see at the bottom for another improved package containing the “gapps”). Each manual steps are detailed here.

    It’s really clear and did work quite well for me.. Quite well because it appeared that at the step where I had to select the gapps.zip file and install it, this one was not available… I think that the problem that I didn’t have a microSD card in the slot… I would recommend to have one plugged before rooting the device… What I did to solve that issue: I copied the file manually from my PC on a microSD card, I did plug the card in the device and I used the “Mount” menu of TWRP to make the SD card acessible from TWRP. Finally, I could select  gapps.zip on the external SD.

    A last fright however. After the installation of the Google Apps (when TWRP says “Installation Complete!”) and before clicking “Reboot System” in the lower right, I noticed error messages in the logs: failed to mount \data.. Gasp !! I did try to mount it manually without success. As I still didn’t find a solution after one hour spent googling, I decided to reboot the device and pry…. And  fortunately, although it took a few minutes to restart and complete the update, everything appeared to be running really fine !

    Next, I had access to all the Google apps, including  Google Play. I did installed successively on the Nabi all the application I already paid and installed in the past on my Galaxy SII…

    There was however a remaining “issue” (neither blocking nor critical), the gapps package was giving a message ‘Android Upgrading’ on every boot. But there is a new package here that solves this issue. Simply copy it on your nabi 2 (E.g.: on the microSD – or download it directly on the internal storage). Next go to the recovery mode in TWRP 2.2.2.1 and install it:

    • While the nabi is turn on, press the “Power off” button for a few seconds to get the “shutdown” prompt.
    • Press next the “Volume +” and the “Power Off” buttons together for a few second to get the boot menu. You should see soon the following entries in the top left corner, is small fonts.
      • Boot normally
      • Fastboot Protocol
      • Recovery Kernel
      • Forced Recovery
    • Select “Recovery Kernel” with the “Volume -” button
      • Don’t wait too long before starting to select this entry or the device starts to “Boot Normally”
    • Confirm the selection with the “Volume +” button
      • The menu becomes brighter
    • Wait for a some long seconds and here it is: the TWRP menu
    • Select Install and browse to find the “gapps.zip” file.
    Another option is to copy the new gapps into the setup of jmztaylor and rerun the script. You may also replace the recovery.img (TWRP) with a more recent one (Read this thread)…

    IMPORTANT NOTICE. If like me you have the UK version (NABI2-NV7A-UK) don’t try to install more recent TWRP like the 2.3.3.0 or 2.4.4.0. They have a bug with the touch screen calibration. you won’t be able to touch and select menu/items/etc… anymore in TWRP 🙁 Really a nightmare. So stick to TWRP 2.2.2.1.

    So, as I had to redo the whole process several times, here is a resume (every info taken from xda-developers!):

    • On the Nabi 2
      • Power it on (Press the “Power” button for 5 seconds).
      • Go into the Daddy/Momy mode
      • Verify that “USB Debugging” is enabled in Settings > System\Developer Options.
      • Check also that you have at least the version 1.9.23 in Settings > System\About.
      • To update the nabi 2, go to Settings > System\ About, Update and click the “Check update” button.
    • On the PC:  Go to Control Panel, Device Manager and look for the Nabi tablet device.  If it has an exclamation mark next to it, install the PDANet software to get the required drivers. The Nabi 2 should next be properly listed.
    • Open a dos command prompt Run As Administrator
    • Go to the location where you have unzipped the jmzrootpackage
    • Replace the files\gapps.zip file with t499users_fuhu_nabi2_gapps.zip
    • Possibly replace files\recovery.img with the one from NabiTWRP244.zip
    • Run install.bat
    • Choose option 1. The ADB server used to communicate with the nabi 2 will start. Press any key to continue
    • The device will reboot and display a menu in the top left corner :
      • Bootloader
      • Continue
      • Reboot-bootloader
      • Reboot
      • Poweroff
    • Press any key in the dos command prompt to continue. The TWRP  will be copied on the nabi 2.
    • Press the “Volume +” button on the nabi to enter the “Bootloader” menu
    • Press next the “Volume -” button until the “Recovery Kernel” menu is selected
    • Press finally the “Volume +” button to confirm the selection. The whole menu appears next much brighter and a few long seconds later you enter the TWRP  UI.
    • In the dos command prompt, press any key to continue. The gapps.zip and root.zip files will be uploaded and the device will reboot and reenter TWRP.
    • In TWRP, press Install
      • If you have difficulties to Press the button, you possibly have the “touchscreen calibration” bug. Bad luck. It’s a real nightmare to use TWRP with that bug. Check the version displayed on the top. I had no issue with TWRP 2.2.2.1
      • I was unable to select the “internal storage” as source for the files to be installed
      • I didn’t find the files pushed from the dos command prompt and had to copy them manually on the microSD. (Visible from TWRP under /external_sdcard)
    • Select both root.zip and gapps.zip (add them in the queue) and proceed
    • During the installation, you could see like me a lot of “E:Unable to mount ‘/data’” and “E:failed to mount /data (Invalid argument)” errors…
    • After the installation press “Wipe Cache/Dalvik” and once done, press “Back”
    • Press “Reboot” and select “System” in the reboot menu. The nabi 2 power off
    • Power on you nabi 2
    • It will take quite a long time to boot. Eventually, it will be “updating Android”
    • Enter the Daddy/Momy mode and go to the Play Store to get “Root Checker”  (e.G.: from free Android tools) to see if the device is rooted properly.
    • You should also have an application named “SuperSU” available
    • You can now also delete the Fuhu apps that you don’t like
      • Use e.g.: ES File Explorer (as far as you already checked all the options in Settings > Root Settings) to delete the relevant .apk files under /vendor/app/. Pay attention that if you delete all of them, you will get a blank welcome screen. If you really want that, make sure that you hat set “Parent Mode as Default Mode” in the Settings > Personal/Security.
      • NvCPLSvc.apk, fuhu_AddApps.apk, fuhu_AppZone.apk, fuhu_Books.apk, fuhu_ChoreList.apk, fuhu_Crafts.apk, fuhu_Fan-a-tech.apk, fuhu_KidzMode.apk, fuhu_NabiCare.apk, fuhu_NabiCloud.apk, fuhu_NabiSpinletsPlusICS.apk, fuhu_NabiSpinletsPlusParentICS.apk, fuhu_NabiSync.apk, fuhu_OOBE.apk, fuhu_ParentalDashboard.apk, fuhu_SpinletPlusVideo.apk, fuhu_SwitchKids.apk, fuhu_TreasureBox.apk, fuhu_University.apk, fuhu_Videos.apk, fuhu_Web.apk, fuhu_nabiMD.apk
    • If you still get the “Android Upgrading” message every time you reboot (as I had… although using the new gapps.zip), it is said that you have to delete manually the two following .odex files (I did renamed them, but as it didn’t work for me, I finally  restored them)
      • /system/app/Gallery2.odex
      • /system/framework/com.google.widevine.software.drm.odex
    • I did notice that although I had update the device from version 1.9.36 to  1.9.37-release-keys , there was still OTA updates available (version v2.0.5)… So I did download and install them and the device did reboot in TWRP mode. As I didn’t know what I had to do, I did “install” again the root.zip and the gapps.zip (in that order!), press again “Wipe cache/Dalvik” and press “Reboot System”… The funny thing is that the update didn’t complete successfully as it is still in the list if I do a “check update”. But instead, the “Updating Android” message is gone 😀

    site: http://www.nabitablet.com

    xda-developers page: http://forum.xda-developers.com/wiki/Fuhu_nabi_2

    Automated scripts: http://forum.xda-developers.com/showthread.php?p=36758895

    Loading

  • Remove Print Jobs stuck in Queue with state Deleting

    I have time to time Print Jobs stuck in the Print Queue that cannot be canceled or deleted. It’s always very frustrating as it blocks other Print Jobs which are usually quite urgent… The only solution is to stop the spooler and delete its content from a command prompt.

    Click to Read More

    Often, it starts with a Job stuck in the Print Queue and not printing. For some reason, although I restart both the PC and the Printer, the Job never starts. So, I try to cancel it but the Job does not disappear from the Queue and keeps displaying the status “Deleting-Printing…” for ever.

    I think that the problem occurs when the PC goes into the Sleep state while the Print Job is not yet completed (But I am quite sure there are other causes). When the PC is waked up, the Job appears stuck for ever.

    Here are the commands  to stop, clean and restart the spooler:

    [bash]net stop spooler
    del %systemroot%\system32\spool\printers\*.shd
    del %systemroot%\system32\spool\printers\*.spl
    net start spooler[/bash]

    Loading

  • Control Windows 8 from Android: Win8 Controller

    Windows 8 Controller

    This software turns an android phone into a multitouch controller for windows 8. It’s however not free except the very basic features – those being enough to take control of the mouse and access the Start Screen and the Desktop.

    Click to Read More

    Win8 Controller comes with a client part to be installed on the Android, and a server part to be installed on the remote Windows 8 PC.  Using this software you control the remote PC as if it is a tablet.

    It works quite fine for most features:

    • Move the mouse
    • Click, double-click, right-click
    • Access the Start Screen, Swipe to the left or to the right (you have put your finger at the very bottom of the Android screen), Tap or Drag tiles, …
    • Use the keyboard of the Android

    I have the following issues:

    • I can’t switch to the Start Screen touching the Android screen with four (or five) fingers.
    • I loose control of the mouse as soon as the “Task Manager” is open on the remote PC and has the focus. I re-gain the control if I run another application which fakes the focus. However, I can’t close the “Task Manager” clicking its close button.
    • Win8 Controller doesn’t run as a service and I can’t use it as long as I am not logged on the remote PC with a user. This is mainly a blocking issue on my HTPC where I have replaced the Windows Shell with Media Center. Indeed, only services can run in the background if the Shell is not run.

    Details: http://www.win8controller.com/

    Download: http://www.win8controller.com/#&download

    Loading

  • Status of FlexRAID Jobs currently running

    While you manually trigger a FlexRAID job using the client FlexRAIDcmd.exe or when a FlexRAID Scheduled Job is started, its status is not displayed automatically in the Web UI currently opened.

    Click to Read More

    The Web UI needs to be reloaded in the Browser (Ctrl + F5). Doing so,

    • A status windows should now be displayed for the current process and
    • The job should also now appear in the “Command Execution Center” (FlexRAID UI > Your Configuration > Tool Box).
      • In that “Command Execution Center”, the “Pause”, “Resume” and “Abort” buttons should now be accessible.
    To get the status of the current job, using the FlexRAID client (FlexRAIDcmd.exe), type in a command prompt: [ps]FlexRAIDcmd.exe localhost – – status[/ps]

    Loading

  • WCF Services – The request failed with HTTP status 405: Method Not Allowed.

    This error occurred while testing WCF services moved from old Windows Servers 2003 on some of our new Windows Server 2008 R2 with IIS 7.5 (not on all). It appeared that depending on the setup sequence, .Net features were not all correctly configured, a.o. the .svc handlers…

    Click to Read More

    Here is the commands to be used in order to fix the setup:

    [bash]

    “C:\Windows\Microsoft.NET\Framework64\v2.0.50727\aspnet_regiis.exe” -i -enable
    “C:\Windows\Microsoft.NET\Framework64\v3.0\Windows Communication Foundation\servicemodelreg.exe” -i
    “C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe” -i -enable
    “C:\Windows\Microsoft.NET\Framework64\v4.0.30319\servicemodelreg.exe” -ia

    [/bash]

    Loading

  • Use FlexRAIDCmd within PowerShell scripts to gracefully stop FlexRAID

    When using FlexRAID in Real-Time mode, the Pool must be stopped before stopping the service, i.e., also before shutting down the server. The best approach is to define a Shutdown Task in Windows to manage this…

    Click to Read More

    The Shutdown Task will run a Powershell Script using the FlexRaidClient to query the state of FlexRAID and trigger actions…

    The FlexRaidClient for windows, named FlexRaidCmd.exe, is not installed by default with the service. It must be downloaded as an Option here.

    The syntax is: FlexRAIDClient Host Port Timeout Command

    Once installed, one can use the Command “view” in a cmd prompt RUN AS Administrator on the server to Start/Stop the pool:

    FlexRAIDCMD localhost - - view class1_0 start
    FlexRAIDCMD localhost - - view class1_0 stop

    The – –  are used as “default values” for the Port and Timeout parameters
    class1_0 must be used for the new driver (=> class1) and to access the first pool (=> ID = 0).

    Starting the pool takes about ~50 seconds.
    Stopping the pool takes less than 10 seconds.

    If the command fails due to a syntax error, the error message can be found in the file log.log
    If the command succeed, there is nothing logged at all in the log file but a message displayed in the console (cmd prompt)

    Quote

    {“success”: true, “status”: null, “commandMessages”: [{“messageCode”: “successStoragePoolStarted”, “messageData”: [“V”]}], “serverMessages”: null}
    => Le pool de stockage est bien démarré pour le volume: V:…

    Notice: In a normal cmd prompt (not run as admin), the command returns an error due to an access denied on the log file:

    Quote

    log4j:ERROR setFile(null,true) call failed.
    java.io.FileNotFoundException: log.log

    Notice: if the Web UI was open before executing a Start/Stop, it must be reopened (or refreshed: CTRL-F5) otherwise it does not display the new state of the pool.

    Regarding the log.log file, this one has better be located in a fix location. Edit the file log4j.properties and set a path like:

    log4j.appender.default.File=C:/FlexRaid/FlexRAIDCmd.log

    Pay attention to the path separator! It’s not the one used by Windows but the one used in Java!

    To shutdown the FlexRaid server after stopping the pool, use the command shutdown-server.

    FlexRaid localhost - - shutdown-server

    If the pool is still running, we get the following response:

    Quote

    {“success”: false, “status”: null, “commandMessages”: [{“messageCode”: “errorShutdownNotAllowedStoragePoolServiceRunning”, “messageData”: []}], serverMessages”: null}
    => Pour pouvoir arrêter le service “host”, le service de pool de stockage doit être arrêté!

    If the service stops successfully, we get :

    Quote

    {“success”: true, “status”: null, “commandMessages”: [{“messageCode”: “successServerShutingDown”, “messageData”: []}], “serverMessages”: null}
    => Arrêt du serveur en cours…

    To restart the service, we can use:

    net start "FlexRaid"

    Notice: I didn’t find yet on the forum the difference between ‘FlexRaid localhost – – shutdown-server’ and ‘net stop “FlexRaid’. To my knowledge ‘net stop’ is synchronous and therefore maybe preferred to stop the service properly before shutting down ?! (FlexRaid message seems to indicate it’s asynchronous)

    Notice: If I run “FlexRaid localhost — shutdown-server” while the service is not running, I get obviously an exception “Connection refused: connect : ConnectException” but also this message in the log file (log.log):

    Quote

    ERROR: Unexpected character (‘A’ (code 65)): expected a valid value (number, String, array, object, ‘true’, ‘false’ or ‘null’)
    at [Source: java.io.StringReader@2f3d698; line: 1, column: 2] org.codehaus.jackson.JsonParseException: Unexpected character (‘A’ (code 65)): expected a valid value (number, String, array, object, ‘true’, ‘false’ or ‘null’)
    at [Source: java.io.StringReader@2f3d698; line: 1, column: 2]

    Now, here is how to create a “shutdown task” in the Local Group Policies of a Windows Server 2012:

    1) Enable script execution on the server
    a) On the Start Screen right-click the Windows PowerShell tile and run it As Administrator
    b) execute “Set-ExecutionPolicy RemoteSigned” in that shell and answer “Y”

    2) Create the script
    a) Create a file “StopFlexRaid.ps1” in your “FlexRaid Client” folder (e.g.).
    b) Type the script found bellow in the file (change the path to FlexRaidCmd)

    3) Use the script as Shutdown Script
    a) On the Start Screen, type “gpedit.msc” and run it.
    b) Go to the node “Computer Configuration\Windows Settings\Scripts (Startup/Shutdown)”.
    c)  Edit “Shutdown” and in the tab “PowerShell script”, “Add” StopFlexRaid.ps1

    Notice:
    – Shutdown scripts are run as Local System, and they have the full rights that are associated with being able to run as Local System.
    – Shutdown scripts are run synchronously. The Server should wait on the script before shutting down.

    Here is the StopFlexRaid script:

    [ps]

    $srvName = "FlexRAID"
    $flexCmd = "C:\Program Files (x86)\FlexRAID 2.0 Client\FlexRAIDCMD.exe"
    $servicePrior = Get-Service $srvName
    #"$srvName is currently " + $servicePrior.status

    function ExitWithCode
    {
    param
    (
    $exitcode
    )
    "Exit with code $exitcode"
    #$host.SetShouldExit($exitcode)
    #exit
    }

    $flexCmd = "C:\Program Files (x86)\FlexRAID 2.0 Client\FlexRAIDCMD.exe"

    function ExecuteFRCmd([string]$cmd, [string]$hostname="localhost", [string]$port="-", [string]$timeout="-")
    {
    $error.clear()

    $pinfo = New-Object System.Diagnostics.ProcessStartInfo
    $pinfo.FileName = $flexCmd
    $pinfo.RedirectStandardError = $true
    $pinfo.RedirectStandardOutput = $true
    $pinfo.UseShellExecute = $false
    $pinfo.Arguments = "$hostname $port $timeout $cmd"
    $p = New-Object System.Diagnostics.Process
    $p.StartInfo = $pinfo
    $p.Start() | Out-Null
    $p.WaitForExit()
    $output = $p.StandardOutput.ReadToEnd()

    if ( $error.count -eq 0)
    {
    # Clean the JSON message (remove the trailing text (=> blabla))
    $output = $output -replace ‘(?<First>.*)=>.+’, ‘${First}’
    }
    else
    {
    $output = $null
    }

    return $output
    }

    function IsAnyTaskRunning()
    {
    $running = $FALSE

    $state = ExecuteFRCmd("status")

    if ($state -eq $null)
    {
    throw "Command failed to execute"
    }
    else
    {
    #Write-Host "States: $state"

    $process = $state | ConvertFrom-Json

    $message = $process.commandMessages.messageCode
    if ($message -eq "successNoProcessSinceServerStartup")
    {
    #Write-Host "No Process started since Server startup"
    }
    else
    {
    $processID = $process.status.referenceCode

    do {
    $state = ExecuteFRCmd("status "+$processID)
    $process = $state | ConvertFrom-Json

    switch ($process.status.status)
    {
    { @("STATUS_STARTED", "STATUS_PROCESSING", "STATUS_PAUSING", "STATUS_RESUMED", "STATUS_RESUMING") -contains $_ }
    {
    #Write-Host task $processID – $process.status.task – is running
    $running = $TRUE
    }
    { @("STATUS_COMPLETED", "STATUS_ABORTED", "STATUS_ABORTING", "STATUS_PAUSED") -contains $_ }
    {
    #Write-Host task $processID – $process.status.task – is not running
    }
    }

    $processID -=1
    } while (($processID -gt 0) -and ($running -eq $FALSE))
    }
    }

    return $running
    }

    Write-Eventlog -Logname ‘Application’ -source ‘FlexRAID’ -eventID 1 -EntryType Warning -Category 0 -message "Graceful FlexRAID Shutdown triggered"

    $wid = [System.Security.Principal.WindowsIdentity]::GetCurrent()
    $prp = new-object System.Security.Principal.WindowsPrincipal($wid)
    $adm = [System.Security.Principal.WindowsBuiltInRole]::Administrator
    $IsAdmin = $prp.IsInRole($adm)
    if (-not $IsAdmin) {
    write-host "Current powershell process is not running with Administrator privileges"

    $message = "Graceful FlexRAID Shutdown not running with adhoc rights…"
    Write-Eventlog -Logname ‘Application’ -source ‘FlexRAID’ -eventID 1 -EntryType Error -Category 0 -message $message
    cmd /c shutdown -a
    ExitWithCode -exitcode 2
    }
    elseif ($servicePrior.status -eq "Stopped")
    {
    "$srvName is already " + $servicePrior.status
    }
    elseif ($servicePrior.status -ne "Running")
    {
    "$srvName is not Running but " + $servicePrior.status
    }
    else
    {
    $running = IsAnyTaskRunning
    if ($running -eq $TRUE)
    {
    $message = "FlexRAID process(es) still running and preventing Server to shutdown…"
    $message
    Write-Eventlog -Logname ‘Application’ -source ‘FlexRAID’ -eventID 1 -EntryType Error -Category 0 -message $message
    cmd /c shutdown -a
    ExitWithCode -exitcode 2
    }
    else
    {
    "Wait on the Storage Pool to stop. This can take a few seconds."

    $state = ExecuteFRCmd("view class1_0 stop")

    $state
    $abort = "False"

    if ( $state -eq $null)
    {
    "Storage Pool failed to stop"
    $error[0] $message = "FlexRaid Storage Pool failed to stop and is preventing Server to shutdown: " + $error[0] $message
    Write-Eventlog -Logname ‘Application’ -source ‘FlexRAID’ -eventID 1 -EntryType Error -Category 0 -message $message
    cmd /c shutdown -a
    ExitWithCode -exitcode 2
    }
    else
    {
    $process = $state | ConvertFrom-Json

    $message = $process.commandMessages.messageCode
    if ($message -eq "successStoragePoolStopped")
    {
    "Storage Pool successfuly stopped"
    Write-Eventlog -Logname ‘Application’ -source ‘FlexRAID’ -eventID 1 -EntryType Warning -Category 0 -message "Storage Pool stopped before shutting down"
    }
    else
    {
    if ($message -eq "errorNoActiveStoratePool")
    {
    "Storage Pool actually not started"
    }
    else
    {
    $abort = "True"
    $event = "FlexRaid Storage Pool failed to stop, preventing Server to shutdown: " + $state
    $event
    Write-Eventlog -Logname ‘Application’ -source ‘FlexRAID’ -eventID 1 -EntryType Error -Category 0 -message $event
    cmd /c shutdown -a
    ExitWithCode -exitcode 3
    }
    }

    if ($abort -eq "False")
    {
    $error.clear()
    Stop-Service $srvName
    if ( $error.count -eq 0)
    {
    Write-Host -NoNewLine "Waiting on $srvName to stop "
    $timeout = new-timespan -Minutes 1
    $sw = [diagnostics.stopwatch]::StartNew()
    while (((Get-Service $srvName).status -ne "Stopped") -and ($sw.elapsed -lt $timeout))
    {
    Write-Host -NoNewLine "."
    sleep 1
    }
    "."
    }

    $serviceAfter = Get-Service $srvName
    if ($serviceAfter.status -eq "Stopped")
    {
    "$srvName is now " + $serviceAfter.status
    ExitWithCode -exitcode 0
    }
    else
    {
    "$srvName failed to stop. It is now " + $serviceAfter.status
    ExitWithCode -exitcode 1
    }
    }
    }
    }
    }[/ps]

    Here is the code to start FlexRaid, useful while testing.

    [ps]

    $srvName = "FlexRAID"
    $flexCmd = "C:\Program Files (x86)\FlexRAID 2.0 Client\FlexRAIDCMD.exe"
    $servicePrior = Get-Service $srvName
    #"$srvName is currently " + $servicePrior.status

    function ExitWithCode
    {
    param
    (
    $exitcode
    )
    "Exit with code $exitcode"
    #$host.SetShouldExit($exitcode)
    #exit
    }

    if ( ($servicePrior.status -ne "Stopped") -and ($servicePrior.status -ne "Running"))
    {
    "$srvName is not Stopped but " + $servicePrior.status
    }
    else
    {
    if ($servicePrior.status -eq "Running")
    {
    "$srvName is already " + $servicePrior.status
    }
    else
    {
    Start-Service $srvName

    Write-Host -NoNewLine "Waiting on $srvName to start "
    $timeout = new-timespan -Minutes 1
    $sw = [diagnostics.stopwatch]::StartNew()
    while (((Get-Service $srvName).status -ne "Running") -and ($sw.elapsed -lt $timeout))
    {
    Write-Host -NoNewLine "."
    sleep 1
    }
    "."
    }

    $serviceAfter = Get-Service $srvName
    if ($serviceAfter.status -eq "Running")
    {
    "$srvName is now " + $serviceAfter.status

    $error.clear()
    "Wait on the Storage Pool to start. This can take a while."
    $stopPool = Start-Process $flexCmd -ArgumentList "localhost – – view class1_0 start" -NoNewWindow -Wait -PassThru

    if ( $error.count -eq 0)
    {
    ExitWithCode -exitcode 0
    }
    else
    {
    "Storage Pool failed to start"
    $error[0] ExitWithCode -exitcode 2
    }
    }
    else
    {
    "$srvName failed to start. It is now " + $serviceAfter.status
    ExitWithCode -exitcode 1
    }
    }

    [/ps]

    Loading

  • FlexRaid on Server 2012 instead of Space Storage

    FlexRaid
    FlexRaid – Software Raid and Storage Pool

    In the past, I have been using the onboard RAID controller of my Home Server’s motherboard to secured its data, a RAID 5 with 6 HDD to be more precise. But I was in a urgent need for a new solution.

    Click to Read More

    Indeed, I had several concerns:

    • If the motherboard would die, data would not be accessible anymore except with a replacement motherboard with same amount of identical RAID controllers
    • if I would be out of space, new disks could not be added to easily in the existing RAID array (mainly due to lack of space in the case). Also replacing existing disks with larger ones would be quite dangerous as duplicating the whole array before such a risky upgrade was not possible (lack of backup storage).
    • After a power failure or a BSOD, the RAID was checked (for about 12 hours), making all read access veryyyy sloooooooow.
    So, I have decided to “upgrade” my Home Server with
    • A server case able to enclose up to 24 HDD (with adequate controller cards)
    • A software RAID solution to not rely on hardware anymore
    • A software Pooling solution to be able to expand seamlesslythe storage space
    For the Home Server Hardware part, including the case, see here.

    For the Software part, I wanted to go with a Server 2012 Essentials because I really like

    • Its centralized PC-image backup feature and
    • Its centralized File History backup functionality.
    • I don’t want to mix OS in my network

    Server 2012 also supports pools of disks with data redundancy, a feature named Space Storage. But it has a several (big or not) disadvantages IMO:

    • Drives containing data may not be added into the pool 🙁
    • In addition, if the server dies, a disk moved into another PC will be readable but not writable, except if this other PC is also running Space Storage and all disks are moves. That could be an issue if the dead server cannot be quickly replaced.

    So… What else ? I started to look for solutions to manage pools of disks or to manage RAID, or – better – to do both: Greyhole, SoftRaid, mhddfs, UnRAID, FlexRAID, mdadm, SnapRaid, Amahi, FreeNAS, disParity, LVM, JBOD, MooseFS, GlusterFS, ZFS, Liquesce… And I finally decided to go with FlexRaid although it is not free (but not expensive either):

    • It runs on Windows Server 2012 x64 (On the opposite, FreeNAS or Unraid for example are integrated with their own OS – linux based).
    • It has a nice Web UI (based on extJS like the DSM of my Synology) which make remote management easy and comfortable, although IMO there is still place for improvement.
    • It supports both RAID software and Pooling (There are separated licences if you don’t want both)
    • It has supports for either a RealTime protection or a Snapshot mode (I.e.: RAID is nightly updated on schedule – not slowing down read/write access during the day).
    • Disks containing data can be added in the Pool at any time.
    • Disks can be temporarily removed to be accessed from within another machine. If Snapshot mode is used, data may be modified before re-plugging the disk in FlexRaid. Notice: If data are modified, they will only be protected if the disk is re-plugged in FlexRaid and if a the RAID is updated.
    • Disks temporarily removed can be re-plugged anywhere in the machine. FlexRaid does not rely on the physical location but on the disk mount point which is “memorized” on the disk itself.
    • It does not store any recovery information on the disks containing data. This information is stored on dedicated disks
    • It supports multiple simultaneous disk failures (it implements several type of RAID) depending on how many disks are assigned to store the recovery information.
    • It comes with a Wizard “for dummies” to easily create a pool of disks with a few default settings. It also supports an expert mode with more flexibility – but also with more complexity;
    • Disks can be replaced with larger ones.
    • As far as the FlexRaid configuration is backuped, the OS can be re-installed from scratch; the recovery information won’t have to be recomputed and the data are safe.
    • In case of crash, RAID validation is fast (I still have to check the speed of a recovery)
    • It has support for S.M.A.R.T monitoring with email alerts (although configuring S.M.A.R.T is not integrated in a Wizard and can require some research).

    To be honest, IMHO, the version 2.0 of this product is not yet ready for all end-users. They will have to be comfortable themselves with server engineering to solve various possible issues. Also, it seems to me that only one technical guy from FlexRaid is answering questions and offering support on the official forum. He knows very well his product, but still…

    On my own, I had a lot of issues while testing the product – mainly because I did a lot of operations like creating/deleting pools, adding/removing disks, sharing/un-sharing folders, stopping/starting the service, etc… But also because Murphy was at the party: after many various issues followed by a complete re-installation of the server, one disk used to store FlexRaid’s parity data started to die. If you intend to test it, I really recommend to do it in a VM with virtual drives that can be easily re-staged. FlexRaid has a Trial of 14 days.

    Once the dead disk removed, FlexRaid started to run fine with the following “configuration” (as named in FlexRaid) – See Attention Points before create a new configuration:

    • 3 data disks (named DRU in FlexRaid terminology – they contains the data) compound each of 2 HDD (2TB + 3TB)
      • HDD used in DRU are not using a proprietary format but simply NTFS
      • HDD can be added in a DRU with existing data
      • HDD can be of any size, but DRU have better be of the same size.
    • One parity disk (named a PPU in FlexRaid terminology – they contain the recovery information) compound of 2 HDD (2TB + 3TB).
      • PPU must be at least as large as the largest DRU
        • It has better be larger because in case of bad-sector on a HDD in the PPU, FlexRaid will be out-of-space and fail to update the parity data.
      • It’s recommended to have one PPU per 3 DRU.
    • PPU and DRU created with the wizard (Cruise Control) instead of the expert mode.
      • Merge Mode = “Auto-Folder-Priority”.
        • To optimize power consumption (most probably only one drive accessed when fetching data)
        • To keep data grouped if by any chance the disks must be moved into another PC during DRP.
      • a Snapshot mode
        • To not slow down write operation
        • As anyway, data on the Home Server does not change often at all.
    • A login/password set in “System Control Toolbox” > Login pane
    • Automatic start-up of FlexRaid storage pool 15″ after the Server boot in “[your configuration] > “Preferences and settings”
    • A Scheduled Task to Update the RAID (Parity Data) every day at 23:00.
    • A Scheduled Task to Validatethe RAID (Parity Data) every week at .
      • The Validate task does both change detection along with datarot (silent data corruption) detection through data checksum valiation.
    • A Scheduled Task to Verifythe RAID (Parity Data) every month.
      • The Verify task does bit for bit verification of the RAID.
    To be safe however, and based on the amount of disk I have, someone from FlexRaid told me I should either use two PPU of 3TB or possibly add one PPU of 5TB. Doing so, I will double the security level (the RAID could survive after 2 simultaneous disk failures) while only loosing ~6% of space (1TB). For sure, RAID updates will be slower as 2 PPU will have to be updated. But based on my experience, it’s really not that slower. It takes about 1 hour per TB of Data.
    Here is a benchmark of accessing data in FlexRaid’s pool configured with one 5TB PPU and 3x5TB DRU (And I got the same results for two 3TB PPU and 4x3TB DRU…) Clearly, FlexRaid with SnapShot mode does not really impact the performances… (Actually, one the Pool features has an impact).
    FlexRaid Snapshot Performance
    FlexRaid Snapshot Performance

    Here is the same benchmark for accessing data in an equivalent Pool with the Real-Time mode..;

    FlexRaid Real-Time  Performance
    FlexRaid Real-Time Performance

    Writing small files is not performing well in Real-Time but that’s due to the accesses to the FlexRaid Configuration Database (on C:\). If that drive is on a SSD, those performance should be quite improved (Support to store that DB on another disk is foreseen…)

    For information: it took a little bit less that 13 hours to compute the parity for about 11TB of data in this 15TB pool.

    ATTENTION POINTS:

    Before starting:

    • Drives used by FlexRaid may not be used as target for Paging or Shadow Copy.
      • However, Shadow Copy can be used as far as the volume used as target for the Storage Location is on a dedicated drive outside of the Pool.
        • Shadow Copy must be enabled:
          1. On the Start Screen type Computer and run Computer Management
          2. Right-Click Shard Folders > All Tasks > Configure Shadow Copies…
          3. Enable for all sources drives (DRU) but not for the virtual drive (Pool)
        • And the Storage Location must be configured on each disk
          • Via the Dsik Management node in the Computer Management:  Properties > Shadow Copies Tab > Settings button > Storage Area (Click details) (to be completed).
          • Configured via command lines (to be completed)
    • Recycle Bin may not be used on drives used by FlexRaid as well as in the virtual drive (pool)
      • Instead FlexRaid proprietary Recycle Bin can be enabled in the Snapshot mode only (there is no such support for Real-Time mode): Configuration > Preferences and Settings > Advanced Properties : Enable Recycle bin mode: true (and Save).
      • Also, make sure this registry folder exists or you could experience “Recycle Bin on V: is corrupted” errors
        • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\BitBucket (For 32 bit Windows)
        • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\BitBucket (For 64 bit Windows)
      • And finally disable all the Recycle Bin on the drives intended to be managed by FlexRaid (as well as on the virtual drive)
        1. Using Windows Explorer, navigate to each drive create a dummy file and then delete that dummy file. This will for sure create a Recycle Bin
        2. After doing the above for each drive, empty the recycle bin
        3. Right-click on the Windows recycle bin icon and choose properties
        4. There disable recycle bin for each of your drives
        5. Reboot
    Also notice:
    • FlexRaid web UI is not fully compatible with Chrome. Some expansible panes of this UI collapse and expand for ever one accessed.
    • The logs are full of security errors. It’s simply due to the Web Client UI session which expires… It’s not fatal.
      • To change the log level, edit the files in C:\Program Files (x86)\<FlexRAID folder>\logging.options.txt
        • FLEXRAID_LOG_LEVEL=TRACE
        • FLEXRAID_SYS_LOG_LEVEL=TRACE
      • Also change the logs location as many files will be created in TRACE level
        • FLEXRAID_LOG_FILE_ROOT=C:\FlexRaidLogs\
    • The path of the log in Log4j.properties must be like C:/FlexRaidLogs/
    • I always experience issues when trying to remove disks from PPU or DRU. The only solution I found is to delete the configuration and create a new one.
    • Once a disk is added in a PPU or DRU, it’s mounted by FlexRaid in a hidden folder under C:\FlexRAID-Managed-Pool\…
      • This folder is only accessible by the System account which is the account configured to run the FlexRaid Service.
      • After deleting a “configuration” or uninstalling Flexraid, this folder is still there.
      • To view it, you must
        1. Start Explorer, click on the “View” menu and select “Options” (on the extreme right).
        2. There, go to the “View” tab and tick “Show hidden files, folder and drives”
        3. Uncheck “Hide protected operating system files (recommended).
      • Once the folder is visible, you can change the Security and grant full access right to the “Administrators” group. Possibly use this great tip to also easily take back the ownership with a contextual menu (works only on files/folders. not on drives).
    • Hidden files are not protected as ignored by FlexRaid.
    • When deleting a “configuration”, disk that were assigned a letter before being added in a PPU or DRU will get back that letter. However, in my case, disks were mounted. After deletion of the “configuration”, they should have been re-mounted on their original folder (according to someone from FlexRaid). But this didn’t occur. I had to re-mount them myself one by one. I have not receive any valid explanation yet…
    • When managing Shares and Permissions via FlexRaid UI:
      • You must use username defined in the domain (on Server 2012 Essential, a domain is always installed by default – and mandatory for various services). However, you don’t have to prefix that username with the domain name (I.e.: <domain>\<username>)
      • Latest changes done via the UI appear sometimes to not be reflected immediately in the Windows Properties (In the “Advanced Sharing” tab of the folder). Ex.: If you delete permissions for a user. You must both
        • Close the folder Properties window if already open in Windows.
        • Navigate to the “Home” menu and back to “Server Shares” in FlexRaid UI.
        • Back to the folder Properties > Advance Sharing, the changes should now be visible.
      • Don’t forget that you need to use a domain user to access the shares from remote machine. If you try to access them from a PC not joined to the domain, you must provide a login like “<domain>\<username>”. Also remind that Server 2012 Essentials is missing “HomeGroup” support.
    Important remarks:
    • When using a “Snapshot” mode, data are in great danger as soon as files start to be modified and as long as the RAID is not updated. Indeed, as some data are modified, the information on the PPU may not be used anymore to restore files in the same range of address (?) in a DRU which would crash. Concretely, files restored using a not-up-to-date PPU will be corrupted.
      • I didn’t find any information that confirm (or not) that a disk is most likely to fail during write operations. But as I plan to often backup data on my server, I am afraid that I wouldn’t be able to restore my files after a crash occurring such an operation… So => I will investigate the RealTime mode which is still experimental
    • When using a RealTime Mode
      • Only use softwares that preallocate files to copy data into the pool (e.g.: Windows Explorer but not TeraCopy!!!)
      • There must be at least 10GB of free space on each disk going to be added in the Pool (As DRU).
      • Check that the Reserve is at least 50GB or more in the Configuration > Preferences and Settings > Run-Time Properties > General Properties: Reserve. This is the default when using the Cruise Control mode.
      • After a server crash, a Reconcile is required (Similar to a Windows Disk Scan).
      • Always stop the storage pool through the Web UI before restarting the FlexRAID service or your OS!!!
        • This can be solved using a Shutdown Task to be created in the Local Group Policies. See the script posted as comments.
      • Increase the WaitToKillServiceTimeout Registry key value to 300000 (it’s 5000 by default; i.e. Windows systems will kill the service in as little as 5 seconds which often does not leave FlexRAID with enough time to properly close up it resources).
        • HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Control
      • Never write directly to the “source” drives but only through the pool as Explorer writes silently data on the disks. It means that a drive may never be temporarily removed from the pool, accessed from within another PC (even for “READ” only operations) and re-plugged later in the pool.
      • There is no Recycle Bin, meaning that data are deleted permanently.
        • And unfortunately, Shadow Copies can NOT be used on the Pool… So it cannot be used either to restore deleted files.
        • Actually Recycle Bin must be disable on all disks participating in the pool as well as on the pool itself. And that must be done for all accounts connected on the server.
        • As a replacement, the undeluxe software pro can be used. It can run as a service (start with windows) and will move deleted files into a folder that can be configured to be located on a drive outside the FlexRAID Pool… As an alternative, FlexRAID will come with a universal recycle bin in a next version…
      • It could be advised – for the Real-Time mode only – to disable thumbs.db file generation although those files being hidden, they are not taken into account (I.e.: not protected by FlexRaid). In addition
        1. On the Start Screen, type and run gpedit.msc.
        2. Expand User Configuration – Administrative Templates – Windows Components.
        3. Click on File Explorer.
        4. Right-click the entry “Turn off the caching of thumbnails in hidden thumbs.db files” and choose Edit.
        5. Enable the setting.
        6. Log off and back on again (or reboot) after making these changes.
        7. Delete all the thumb.db files from you drives using this command: Del {Drive Letter}:\Thumbs.db /f/s/q/a
      • Actually the options “Restrict Thumbs.db” and “Restrict Desktop.ini” can be used in the Console for that purpose, but it is useful only when using the Real-Time RAID in Expert mode and if frequently browsing the source drives. Indeed, although we are not changing anything on the source drives, Explorer will actually update the thumbs.db and desktop.ini files as we browse. There are implications though with selecting those options as Explorer will no longer cache your thumbnails or remember certain folder view preferences.
      • Parity data are only updated when accessing the drives through the Pool. If data are modified directly on the source drives, you will have to fix that by running the Reconcile task in FlexRaid.
    • That being, the following Windows Features are safe to use with FlexRaid
      • Windows Search Service
      • Windows Backup
      • BITS (Background Intelligent Transfer Service)

    Site: http://www.flexraid.com/

    Documentation: http://wiki.flexraid.com/

    Support: http://forum.flexraid.com/ (support Tapatalk ;))

    Loading

  • Hard Drive Benchmark software: CrystalDiskMark

    Crystal Disk Mark

    CrystalDiskMark is a free utility to benchmark storage devices. Easy to use to compare disk performances, it runs on Windows 8 and older OS as well as Server 2012 (x86/x64).

    Click to Read More

    Loading

  • Hard Drive Diagnostic: CrystalDiskInfo

    Crystal Disk Info
    Crystal Disk Info

    CrystalDiskInfo is is a nice freeware utility for hard drive diagnostics with support for monitoring and mail alerting based on disks’ S.M.A.R.T info.

    Click to Read More

    It usually supports USB connection and Intel RAID. But I like it as it gives more information than some other similar tools, a.o.: the letter assigned to the disk or the disk number instead of only the disk model name. And it can also be used to monitor the machine and send mail alerts.

    Also, in addition graphs with S.M.A.R.T. information, it also show you the AAM/APM settings and let you control them.

    • AAM (Automatic Acoustic Management) to reduce noise
    • APM (Advanced Power Management) to reduce power consumption
    It has also advanced methods to search for disks (It show disk displayed as unknown by other tools)
     

    Donwload  : http://crystalmark.info/download/index-e.html

    HDD Scan
    Hdd Scan

    HDDScan is another nice freeware for hard drive diagnostics with support for RAID arrays, Flash USB and SSD drives.

    Click to Read More

    It can be used to :

    • Test storage device for bad-blocks and bad-sectors,
      • Verification in linear modeto determine if the drive needs data rescue, has recoverable errors or in its perfect shape.
      • Reading in linear mode is a simpler, but faster disk check.
      • Erasing in linear mode.
      • Reading in Butterfly mode (synthetic random read).
    • Show S.M.A.R.T. attributes
    • Show temperatures
    • Change some HDD parameters such as:
      • AAM (Automatic Acoustic Management) to reduce noise
      • APM (Advanced Power Management) to reduce power consumption

    I like it too, in addition to CrystalDiskInfo because it can test the disks and I noticed that it was providing some other S.M.A.R.T attributes than CrystalDiskInfo…

    Download: http://hddscan.com/

    Information about S.M.A.R.T messages: http://en.wikipedia.org/wiki/S.M.A.R.T

    Loading

  • Disable the touchpad while typing text: TouchFreeze

    TouchFreeze is a free, open-source utility for laptops that disables the touchpad as soon as one starts typing… and re-enables it when one stops.

    Click to Read More

    As many laptop users, when my palm accidentally grazes the touchpad while typing text, I experience unpredictable cursor  jumps resulting in garbled text 🙁

    TouchFreeze is very small piece of software sitting in the system tray: it simply and silently turns off the touchpad while one is typing. It works really really fine and is compatible with Windows 8 x64.

    Download: http://code.google.com/p/touchfreeze/

    Loading

Tags


Acer iDea 510 AirPlay Android Backup DD-WRT DNS DS209+ DS713+ DS1815+ FlexRaid Galaxy Galaxy S2 Galaxy S7 Google Assistant Google Home HTPC Kies MCE MySQL Nabi 2 Nvidia TV Shield One Plus One OpenHab Outlook Philips Hue Plex RAID Raspberry PI Remote Desktop Root Access Samsung Scripts Synology Team Build Visual Studio VMWare Wi-Fi Windows Windows 8 Windows 8.1 Windows 10 Windows Server 2012 XBMC Xpenology ZigBee

Categories


Archives