Robustness + hardware id check + debug flag + sdk version

@aaustin 
The suppress is for userId.isEmpty(). Guess I better change it to userId.length() == 0