How to root the Bell and Howell C714 tablet

I picked up a couple inexpensive Bell*Howell C714 tablets from Ollie’s Bargain Outlet store for Miriam and Asher (5 & 4 years old).

Bell&Howell C714 Tablet

In order to sync movies & tv shows to the tablets, the Plex app needs write access to the sdcard (memory card).  Since the Plex app is a media type application for Android, I needed to update system/etc/permission/platform.xml but that requires root access.   So what to do?  Root it!

We need to download and “root with Restore” from HOW TO ROOT ANY CHINESE ANDROID 4.0 PHONE OR DEVICE.

  1. Remove the sdcard from the tablet
  2. On the tablet, we need to turn on USB Debugging. This can be found under Settings -> Developer Options. Turn it on.
  3. Install
  4. Unzip “root with” on to your C: drive.  I used “C:\root” for the directory
  5. Tap your Windows key, and type cmd but do not hit enter.  Right click on it and click on “Run as administrator”
  6. cd to the directory where you unzipped “root with”
  7. Type “RunMe.bat” and select the second option.  Wait until it is done.

root with Restore

After a few minutes your Bell*Howell C714 tablet will be rooted and you can edit the platform.xml file!  Don’t forget to insert your sdcard.

For Plex to store the synced shows on the sdcard, I had to

I had to add to both the read & write storage for my kids’ Bell&Howell C714 tablets to get plex to store the sync’d files on the sdcard. update system/etc/permission/platform.xml

<permission name=”android.permission.READ_EXTERNAL_STORAGE” >
  <group gid=”sdcard_rw”></group>

<permission name=”android.permission.WRITE_EXTERNAL_STORAGE” >
  <group gid=”sdcard_rw”></group>


<permission name=”android.permission.READ_EXTERNAL_STORAGE” >
  <group gid=”sdcard_rw”></group>
  <group gid=”media_rw”></group>

<permission name=”android.permission.WRITE_EXTERNAL_STORAGE” >
  <group gid=”sdcard_rw”></group>
  <group gid=”media_rw”></group>
Share Button

Configuring two wireless routers with one SSID (network name) at home for free roaming

Scott Hanselman wrote:

When we moved into the newdiagramnotneeded_3 house and setup the new home office a few years back, I posted about wiring the house for wired Cat-6 ethernet. I’ve never liked or trusted wireless, so when we started building the place it was always in the plan to wire everything and focus on speed.

Fast forward to 2010 and the Wii is wireless, the iPad and iPhones are wireless, the Windows Phone 7 is wireless, my wife’s laptop is wireless, and it’s all slow. It’s slow because I’m using the standard Verizon (now Frontier) FIOS wireless router to cover all corners of a two story house. Over the last few weeks it’s been especially irritating as the wife has moved her laptop into another room and I’ve started watching streaming Netflix from the corner of a room I’d never had a wireless device in.

Read more on Scott Hanselman’s blog

Share Button

Locking and Unlocking users in SAP Sybase IQ 15 and 16

In IQ 12.x and below, we had the sp_iqlocklogins stored procedure that we could use to quickly lock and unlock user accounts. Starting in v15 of IQ, that stored procedure was replaced with a login policy.

First we need to create the locked_users policy (taken from sybooks:

CREATE LOGIN POLICY locked_users locked=ON;

Now we can simply assign the login(s) to the locked_users policy:

alter user darthvader login policy locked_users;

If at some point Darth has been a good boy or he has us in a force choke hold, we can unlock his login:

alter user darthvader login policy root;

The default login policy is root.

What if you have hundreds of users to lock and unlock?

We need to make sure we can undo locking the logins:

select 'alter user ' + 
   +  ' login policy ' + lp.login_policy_name + ';' 
from sys.sysuserlist sul, sys.sysuser su, sys.sysloginpolicy lp
sul.user_group = 'N'
and sul.dbaauth = 'N'
and su.user_name =
and su.login_policy_id = lp.login_policy_id;

Produces unlock script:

alter user darthvader login policy root;
alter user bilbo login policy root;

Lock all non DBA role logins:

select 'alter user ' + name +  ' login policy locked_users;' 
from sysuserlist
user_group = 'N'
and dbaauth = 'N'
and name not in ('EXTENV_MAIN', 'EXTENV_WORKER');

Produces lock script:

alter user darthvader login policy locked_users;
alter user bilbo login policy locked_users;
Share Button

Commentary on Simon Ogden’s Out of range histogram adjustments

Simon Ogden recently wrote up an excellent post regarding Out of Range Histogram Adjustments. While he explains in detail how the out of range selectivity is computed, I think we can make it a little bit clearer. I hope Simon doesn’t mind! 🙂

The output of optdiag shows two unique values in the stored statistics (histogram) for the a table. :
Step Weight Value
1 0.00000000 < "C " 2 0.01000000 = "C " 3 0.00000000 < "N " 4 0.99000001 = "N "[/text] Remember the weight values for the unique values. Think of the weight values as percentage of the table not counting out of range values. So if we have the following query then we could expect 1% of the table to contain that value: [sql gutter="false"]select * from table a where a1 = "C"[/sql] Let's move on to out of range values. The general equation to determine the selectivity of a single out of range unique value is:

(1)   \begin{equation*}  s = \cfrac{\cfrac{1}{u + n}}      {1 + \cfrac{1}{u + n}} \end{equation*}

We can simplify that using a bit of algebra:

(2)   \begin{equation*}  s = \cfrac{1}{u + 2n} \end{equation*}

u = the number of unique values in the histogram
n = the number of unique values outside of the histogram
s = selectivity of a single out of range unique value

Let’s assume we’ve added data to the table but haven’t run update statistics yet. The stored statistics won’t contain any metrics on the new data. So, ASE will estimate what it thinks the selectivity could be for the values we are searching on.

In the following query, we are searching for T and Y.

So how does ASE determine the selectivity for T and Y? We can use the selectivity query (2) replacing u and n to compute s:

    \[0.1666667 = \cfrac{1}{2 + 2 \times 2} \]

So, the selectivity for T is 0.1666667 and Y is 0.1666667. Since the sum of the histogram and the out of histogram selectivity (weight) must equal 1, we need to adjust the histogram weight values.

We have two unique values in the histogram: C and N. The revised histogram weight (h) is the percentage of what is left for in histogram unique values:

(3)   \begin{equation*}  h = 1-ns \] \end{equation*}

    \[ 0.6666667 = 1 - 2 \times 0.1666667 \]

As you can see, we have 0.6666667 left over. If you remember from the histogram, the value C composes 1% of the table and the value N 99% of the table. All we have to do is plug those in:

    \[ 0.0066667 = 0.01 \times 0.6666667 \]

    \[ 0.6600000 = 0.99 \times 0.6666667 \]

So we get the results that we’re looking for:

Share Button

test post using QuickLaTeX

A simple test post using QuickLaTeX

(1)   \begin{equation*} E= mc^2 \end{equation*}

    \[ \ce{MgSO_{4}\cdot12H_{2}O(s)} \]

At first, we sample f(x) in the N (N is odd) equidistant points around x^*:

    \[    f_k = f(x_k),\: x_k = x^*+kh,\: k=-\frac{N-1}{2},\dots,\frac{N-1}{2} \]

where h is some step.
Then we interpolate points \{(x_k,f_k)\} by polynomial

(2)   \begin{equation*}     P_{N-1}(x)=\sum_{j=0}^{N-1}{a_jx^j} \end{equation*}

Its coefficients \{a_j\} are found as a solution of system of linear equations:

(3)   \begin{equation*}     \left\{ P_{N-1}(x_k) = f_k\right\},\quad k=-\frac{N-1}{2},\dots,\frac{N-1}{2} \end{equation*}

Here are references to existing equations: (2), (3).
Here is reference to non-existing equation (??).

Rendered by

Share Button

HOWTO: SAP Sybase IQ: Grant bulk copy to a user (bulk read from a client file)

We need to grant permission for the user to use readclientfile and we need to turn that option on if the application doesn’t do it itself.

grant readclientfile to testuser;
set option testuser.allow_read_client_file=on;

Oddly enough we can grant readclientfile to a group and turn on the option to a group but IQ will silently ignore the group option.

This works:

grant readclientfile to testgroup;
set option testuser.allow_read_client_file=on;

This doesn’t work:

grant readclientfile to testgroup;
set option testgroup.allow_read_client_file=on;

Verify that the user has the allow_read_client_file option:

SELECT 'SET ' + user_name + '.' + "option" + ' = ''' + setting + ''';'
FROM sys.sysoptions
WHERE "option" = 'allow_read_client_file'
  AND user_name = 'testuser'


Share Button

HOWTO: Extract Stored Procedure Permissions from SAP Sybase IQ

SELECT 'grant execute ON ' + USER_NAME(sp.creator) + '.'
    + sp.proc_name + ' TO '
    + USER_NAME(spp.grantee) + ';'
    sys.sysprocedure sp,
    sys.sysprocperm spp
WHERE sp.proc_id = spp.proc_id
Share Button

SAP Sybase IQ: SQLCODE=-1010000, ODBC 3 State=”HY000″: symbolic link to RAW device “already exists”

When you create an instance of IQ, you should use RAW devices for stability and performance. I recently created an instance and ran into the error SQLCODE=-1010000, ODBC 3 State=”HY000″ The file ‘/IQ/myiq/devices/IQ_MAIN/’ already exists on AIX. The symbolic link /IQ/myiq/devices/IQ_MAIN/ was pointing to the RAW device /dev/myiqmain001. After many long hours on the phone with SAP, we found the solution, I’m rather embarrassed to say.


  • buffered (cooked) partitions are /dev/myiqmain001
  • unbuffered (REAL) RAW devices are /dev/rmyiqmain001

Note the letter “r” designating a RAW device.

When in doubt, you can use the file utility:
Block Special effectively means cooked partition:

file /dev/myiqmain001 
/dev/myiqmain001: block special (35/1)

Character Special means RAW device:

file /dev/rmyiqmain001
/dev/rmyiqmain001: character special (35/1)

Thanks to John Ting, Richard Weisbrod and Peter Bavin of SAP! It took a long time but we finally figured out what that something really really simple we’re overlooking was.

Feature Request 747716: for IQ to detect non-character raw device during db OR dbfile creation.

Share Button

SAP Sybase IQ: The catalog DBSpaceID is incorrect. DBSpaceID found: 16384 DBSpaceID expected: 16387. This segment cannot be used.

If you ever get the IQ error message The catalog DBSpaceID is incorrect. DBSpaceID found: 16384 DBSpaceID expected: 16387. This segment cannot be used. then you may have overlapping RAW partitions.

I. 10/01 09:18:12. 0000000179 Exception Thrown from s_db.cxx:5631, Err# 4, tid 197 origtid 197 
I. 10/01 09:18:12. 0000000179 O/S Err#: 0, ErrID: 2071 (s_dbextexception); SQLCode: -1009085, SQLState: 'QSA85', Severity: 14 
I. 10/01 09:18:12. 0000000179 [20106]: DBFILE '/IQ/myiq/devices/IQ_USER_MAIN/' is not valid. The catalog DBSpaceID is incorrect. DBSpaceID found: 16384 DBSpaceID expected: 16387. This segment cannot be used.

John Ting of SAP pointed me to the iqheader utility shipped with IQ to verify the symbolic links and RAW devices. Use iqheader to verify the “Full Path” and “File ID” fields. “Full Path” should point to the raw device and “File ID” should be unique for each device.

iqheader /IQ/myiq/devices/IQ_MAIN/
File Name: /IQ/myiq/devices/IQ_MAIN/
Full Path: /dev/rmyiqmain001

DBFile Header Info
  Version: 2
  File ID: 16384
  Create Time: 2013-10-01 12:56:00
  RW Mode: RW
  Last RW Mode: RR
  Size (MB): 524287
  Reserve (MB): 0
  Block Size: 8192
  Page Size: 131072
  First Block: 1
  Block Count: 67108856
  Reserve Blocks: 0
  Last Real Block: 67108856
  Last Mapped Block: 67953599
  OFlags: 1
  Create ID: 0
  Alter ID: 0
  DBID1: 13421826
  DBID2: 13421842
  DBSpace ID: 16384
  Dropped: NO
  _NextFLAllocLowerBank: 3122
  _NextFLAllocUpperBank: 6714002
  Pre-alter commit ID: 0
  _ReqNumFreeListBlocks: 6710880
iqheader /IQ/myiq/devices/IQ_TEMP/myiqtemp001.iqtmp
iqheader /IQ/myiq/devices/IQ_USER_MAIN/

If either of the two fields are the same for your symbolic links to the RAW devices, then you need to contact your Unix or storage admin to determine where the overlap is.

Share Button