Software Tangents

Step-by-Step–Configuring VirtualBox for Server 2008 R2 on Windows 7

Posted on December 9, 2013. Filed under: Server Tangents, Software Tangents |

By: Brenton Blawat

This article came about when we were attempting to install a free virtualization client on our Windows 7 systems. For what otherwise should seem like an easy installation, we had a variety of issues getting this running. It took a culmination of multiple blogs, forums, and vendor instructions to get this functioning properly.

Below are the step-by-step instructions on how to get VirtualBox working with Server 2008 R2.

Prerequisites

  1. Your processor must be 64-bit capable. Most modern CPUs (after 2010) should support 64-bit architecture.
  2. You must have downloaded the Server 2008 R2 ISO and have a valid product key.
  3. You must have administrator access on the Host Machine, inclusive of the BIOS.

Step 1 – Download and Install

Download and Install VirtualBox from the Official Oracle VirtualBox Website.

Step 2 – Setup the Host Machine’s BIOS

Each Hardware manufacturer will have different settings. The below screen shots are for the Lenovo BIOS.

Enable – Hardware Virtualization

  1. Arrow to the Security Tab
  2. Select Virtualization > Press Enter
  3. Enable Intel ® Virtualization Technology
  4. Save Bios Settings

Step 3 – Creating VirtualBox Guest OS for Server 2008 R2

Stepsub1

1. Select New

step1

2. Enter a Server Name > Select Windows 2008 (64-bit) > Select Next

step2

3. Increase the memory to a minimum of 1024 > Select Next (Note: This step is extremely important. Setup will fail if you keep the default of 512 MB of RAM usage.)

step3

4. Select Create a Virtual hard Disk Drive Now > Select Next

step4

5. Select VDI (VirtualBox Disk Image) > Select Next

step5

6. Select Dynamically Allocated > Select Next

step6

7. Select Disk Size (Default 25GB) > Select Create

Step 4 – Configuring VirtualBox Guest OS for Server 2008 R2

1. Select the New Guest > Select Settings

step7

2. Select the System Category and Motherboard Tab > Check Enable I/O APIC

step8

3. Select the System Category and Processor Tab > Check Enable PAE/NX

step9

4. Select the System Category and Acceleration Tab > Check Enable VT-x/AMD-V. Uncheck Enable Nested Paging (Note: The Nested Paging setting caused issues with the MSDN media. It may work with other media.)

5. Select the Storage Category > Right-click Controller: IDE > Select Add CD/DVD Device

step10

6. Select Choose Disk

step11

7. Select the Windows Server 2008 R2 ISO Media to mount. > Select Open

step12

8. Select the ISO Media Drive > Select Live CD/DVD > Select OK

Start the Operating System and You should be on your way.

Happy coding!

Read Full Post | Make a Comment ( None so far )

SQL Server 2008 Security Permissions – Windows / Active Directory Authentication Issues

Posted on October 4, 2010. Filed under: Software Tangents |

By: Brenton Blawat

Systems Administrators around the world have been baffled by security changes with SQL Server 2005/2008 and Active Directory Authentication. Even more so the issues with traversing through layers of security groups for Windows permissions within SQL Server 2008. For example, in the initial releases of SQL Server 2008, there was a frustrating bug in which adding new domain users or groups to SQL Server 2008, you MUST add these domain users and groups as the user that installed SQL Server 2008; be it a domain or a local user. Below are two SQL Server Windows Security caveats that we found were necessary to address to provide some level of sanity to our readers.

 

User Security Identifiers Now in the Sys.SysLogins

One item that Microsoft snuck into SQL Server 2005 and SQL Server 2008 are the use of Security Identifiers (SIDs) in the authentication model. In the typical model of SQL User Authentication, this becomes a non issue, however, with a Windows based authentication, this can cause HUGE headaches if not planned for properly.

Security Identifiers are identification GUIDs that are tied to users and groups in local security and active directory. These values are created to ensure that if a hacker tries to hijack a username such as “Brenton” in the “Geeks” group, it rejects the hijacked username as the security identifier is required in addition to the login name. This works as an excellent method to prevent hijacking attempts, however, if an administrator accidently deletes a User or Group, a new SID is created.

SIDs are secure but also are the key to the headache. Lets say a network consists of 1050 independent SQL Servers at a branch of retails stores, like American Eagle Outfitters (they really do have databases at each breach; and they really do have 1050+ stores). If the authentication credential on all 1050 stores is “Geek_User” and a systems administrator accidently deletes this user from Active Directory, all functionality under the “Geek_User” stops. When the systems administrator realizes that he deleted this user, he will add the user “Geek_User” back into Active Directory. The issue is that the ‘”Geek_User”, while named the same, has a new SID, and the authentication into SQL Server 2008 will still fail.

Further, this issue will be extremely difficult to figure out because the User will exists within active director/local security and SQL Server. However, the authentication into SQL Server will fail to work and the services assigned to the authentication will fail to start.

*NOTE: SQL Server 2008 will not allow a User to start its services  (E.G. SQL Server Agent), if the user does not have privileges within SQL Server 2008. The User or Group has to be added prior to the services starting.

One may experience an error message when starting the SQL Server Agent (being that the “Geeks_User” starts the service) :

err1

“Windows Could not start the SQL Server Agent (MSSQLSERVER) service on the Local Computer.

Error 1069: The Service did not start due to a logon failure.”

In a panic, the Systems Administrator now goes into services and re-configures the SQL server credentials of the “Geek_User”. The system now provides the misleading message of granting the logon privilege to the “Geek_user”. Now that the Service Authentication has the correct SID the error message changes. When the systems administrator starts SQL Server Agent Service, the following message is splayed:

err2

“The SQL Server Agent (MSSQLSERVER) service on Local Computer started and then stopped. Some services stop automatically if they are not in use by other services or programs.”

When the systems administrator checks the Windows Event Log it displays:

"Login failed for user ‘%’. Reason: Token-based server access validation failed with an infrastructure error. Check for previous errors"

Correcting SID Issues

All of the above error messages are examples of broken SID error messages. The only way to correct this issue is to remove and re-add the users and groups that have been accidently deleted in SQL Server 2008. This can be done in two different ways, one, a network script on all of the servers, that utilizes SQL Server Authentication or two, a remote Powershell script.

The way to prevent a global outage due to this issue on a global scale for the “large retailer” example, is to create individual Windows User credentials for each of their 1050 stores and place them within their respective SQL Server 2008 instance. This will provide the security of Active Directory (disabling a user account if the server is stolen), and the centralized management utilizing Active Directory. While adding a Group may seem like a more efficient methodology, and it is recommended by Microsoft, it still provides a single point of failure if the credentials are accidently deleted.

The following command can be executed to drop the “Geek_User” from SQL and re-creating the “Geek_User” with ‘sysadmin’ privileges:

   1:  

   2: DROP LOGIN [Geek_User]

   3: CREATE LOGIN [Geek_User] FROM WINDOWS WITH DEFAULT_DATABASE=[MASTER], DEFAULT_LANGUAGE=[us_english]

   4: EXEC sys.sp_addsrvrolemember @loginame = N'Geek_User', @rolename = N'sysadmin'

   5:  

   6:  

 

If Powershell is your flavor of scripting, assuming you know the computer names of each store, the Powershell Code below can be added the “Powershell Script to Determine NetBIOS – Powershell to Add SQL Server 2008 Users or Groups” code (below). Execute these commands on all of the servers affected by the issue.

Feel free to contact me if you would like me to create a looping mechanism with a CSV import.

   1: # Add the user into SQL. Be sure to change the SQL User of sa and password of my password.

   2: [string]$err = sqlcmd -Usa -Pmypassword -d 'master' -Q "DROP LOGON `[$user`]"

   3:  

   4: # This variable will become populated if an error occurred; else it will remain blank.

   5: if ($err) { write-host "ERROR! The following error occurred while Dropping SQL User from Master Database: $err " }

 

NetBIOS Based Windows Authentication Only

One of the issues that we worked with Microsoft to resolve is the authentication mechanisms for users and groups in SQL Server 2008. As of October 4th, 2010, Microsoft only supports NETBIOS based Windows authentication. This means that the credentials of “domain.root\Username” are NOT supported by the SQL Server 2008 authentication protocol stack. Further, in order to use complex domain structures such as “WinXPDevGrp.US.Microsoft.com”, it is required that an administrator resolves the NetBIOS name value of the domain prior to the addition of the User or Group.

Taking the above example, trying to resolve a group named “Geeks”, in the United States Windows XP Development Group at Microsoft, would fail if the administrator utilized the logon name of “WinXPDevGrp.US.Microsoft.com\Geeks”. The following error would appear:

AuthErr

 

“ Create Failed for Login ‘WINXPDEVGRP.US.MICROSOFT.COM\Geeks’. (Microsoft.SqlServer.Smo)

Additional Information:

|–> An Exception occurred while executing a Transact-SQL statement or Batch. (Microsoft.SqlServer.ConnectionInfo)

|———–> Windows NT user or group ‘WINXPDEVGRP.US.MICROSOFT.COM\Geeks’ not found. Check the name again. (Microsoft SQL Server, Error:15401)

Given the conversations with Microsoft, it unfortunately is the character of ‘period’ in the authentication string that is causing the error above. After research, I found that Microsoft addressed the ‘period’ issue in the column names as found in this knowledge base article: KB972856. SQL Server 2008 does not like the use of Periods. Even when using brackets around the name shown like “[WinXPDevGrp.US.Microsoft.com\Geeks]” or “[WinXPDevGrp.US.Microsoft.com]\[Geeks]”, SQL Server 2008 will still produce the above error message.

Workarounds for Domain Authentication

No worries my friends, there are workarounds to this issue. At this point, you typically go to your Systems Administrator asking how to convert domain names to NetBIOS names. Or perhaps ask do all domains have NetBIOS Names? – The simple answer is No. NetBIOS Names are NOT required to create a domain on certain domain controllers. In fact, some organizations disable the use of NetBIOS.

Do all Microsoft Domains have NetBIOS Names? This is a little bit more of a complicated answer. When configuring Active Directory on a Windows Server 2008 Domain Controller, in order to support domain trusts, and forest trusts, Domain NetBIOS names are required. This is our speculation, but we assume this is why SQL Server 2008 utilizes NetBIOS Names for authentication. If the Domain NetBIOS Name cannot be resolved, it assumes either the NetBIOS resolution is disabled or the domain / forest trusts are not configured correctly.  

Workaround #1 – Using the Login Name: “Search…” Feature

SQL Server provides a mechanism for searching the domain for users. There are a few prerequisites that are required on both the SQL Server 2008 system. The following services are required for network browsing on Windows Server 2008 that has SQL Server 2008 on it:

  • Computer Browser Service – Service Name: “Browser”
  • Function Discovery Provider Host – Service Name: “fdPHost”
  • SSDP Discovery Service – Service Name: “SSDPSRV”
  • UPnP Device Host Service – Service Name: “UPNPhost”
  • The firewall rule for network discovery must be configured to enabled utilizing the following command:
    • netsh advfirewall firewall set rule group=”Network Discovery” new enable=yes

From there, you can search the Active Directory Structure to find the appropriate user or group using the SQL Server 2008 GUI.

Workaround #2 – Utilizing NBTSTAT to resolve Domain NetBIOS Names

The tool of choice for system administrators is NBTSTAT. Typing the following command will allow for Domain NetBIOS name Resolution of the current domain you are connected to on a system:

  • nbtstat –n

Command Result:

NetBIOS Local Name Table

NAME…………………TYPE …………………STATUS

XPDEVGRP12…………UNIQUE …………………Registered

 

The NetBIOS name of “XPDEVGRP12\Geeks” would then be required to be manually entered into the “Login Name:” field of the SQL Server GUI, or manually placed into the CREATE LOGON command.

Workaround #3 – Automated Powershell Domain NetBIOS Name Resolution and User Creation

We couldn’t help with my utter (moo) frustration with not being able to come up with a command within a SQL Query to resolve the Domain NetBIOS name without using “sp_configure XP_cmdshell”; a major NO NO for the Department of Defense regulatory security requirements.

Instead we developed a Powershell script to perform the following:

  • Resolve the Domain NetBIOS Name
  • Create the User Syntax For the SQL CREATE LOGON Command
  • Issue SQLCMD commands to create the logon

 

Powershell Script to Determine NetBIOS – Powershell to Add SQL Server 2008 Users or Groups

Download PS1 Code Here

   1: # This script will resolve the NetBios Name of a Domain then add a user with the netbios name.

   2: # Don't forget to execute: set-executionpolicy RemoteSigned

   3: # in powershell prior to the use of this script

   4: # Step 1: Import The Active Directory Module

   5: import-module activedirectory

   6:  

   7: # Step 2: Save the Current Directory Identity into a variable (Replace Domain.root with your domain)

   8: $ident = get-addomain -identity domain.root -ErrorVariable Err -ErrorAction SilentlyContinue

   9:  

  10: # If there is an Error Stop and Report it > Else Continue

  11: if ($err) { Write-Host "ERROR! The following error occurred while obtaining NetBIOS Name: $err" }

  12:  

  13: # Select the netbios name and put it into a string

  14: [string[$netbiosname = $ident.netbiosname

  15:  

  16: # Setup User Variable for the add. Change Geeks to the user or Group you'd desire.

  17: $user = $netbiosname + "\Geeks"

  18:  

  19: # Add the user into SQL. Be sure to change the SQL User of sa and password of my password.

  20: [string]$err = sqlcmd -Usa -Pmypassword -d 'master' -Q "CREATE LOGIN `[$user`] FROM WINDOWS WITH DEFAULT_DATABASE=`[MASTER`], DEFAULT_LANGUAGE=`[us_english`]"

  21:  

  22: # This variable will become populated if an error occurred; else it will remain blank.

  23: if ($err) { write-host "ERROR! The following error occurred while creating SQL User: $err " }

  24:  

  25: # The permission addition will execute if the above command was successful.

  26: Else {

  27:     # Add the credential of Sysadmin to the users. This can be changed to any role. 

  28:     [string]$err = sqlcmd -Usa -Pmypassword -d 'master' -Q "EXEC sys.sp_addsrvrolemember @loginame = N'$user', @rolename = N'sysadmin'"

  29:     if ($err) {

  30:         write-host "Error Assigning Permisssions to $user: $err"

  31:     }

  32: }

 

While Microsoft did document how to do resolve NetBIOS in the Microsoft Library, they forgot a major line of code; which you see in line 5. You have to Import the Active Directory Module into Powershell, or else the command will not be recognized. I thought I would repost this code and provide it to my readers.

This should be a very simple, but useful gem of knowledge.

Happy coding!

Read Full Post | Make a Comment ( 9 so far )

Wavelink Enabler Issues – A story of the Subpar Enablers

Posted on January 23, 2009. Filed under: Software Tangents |

By: Brenton Blawat

Yet again we hit a frustrating snag with the Wavelink Enabler and I have taken it upon myself to add a new section to my blog for Wavelink Enabler Bugs. It’s not that I am frustrated with Wavelink support personnel. They have been more than attentive to my issues and have responded to my calls almost immediately.

The frustration comes with the core of the issue. I am having the same problems in the PPT-8846 Enabler (Released December 2006) as I am having in the MC-55 Beta Enabler (Beta Release this 2009). To Wavelink’s immediate defense, the MC-55 “Beta” Enabler is a “Beta” for a reason. But having an Enabler that has been revised more than once since the release of the 3.50-56 Enabler with the same fundamental issues? – hmmm.

Known Issues:

Issue: Handheld Desktop Displays ; No Method to Get Back to the Wavelink Enabler.

 

Above is an image of my case and point for my frustration. The above graphic displays the exact same issue on both Windows Mobile 6.1 (left) and Pocket PC 2003 (right). Same problem 3 years later?

 

configscreen2 configscreen3

Enabler Config MC-55

Enabler Config PPT-8846

When configuring the Enabler you have the ability to Manage the Taskbar and effectively lock access to the background of the Enabler. While this works most of the time I’ve noticed multiple instances of the Enabler allowing access to the desktop. Additionally, there is no way for the Wavelink Enabler to be accessed again. This is troublesome especially when the Enabler is responsible for Launching Applications (like in my client’s case).

Come on Wavelink; you can do better than this. – I have faith!

Work Around: The only work around for this issue is to restart the handheld. (aka warm boot/soft reset)

Known Versions: 3.50-56, 4-06-13 beta

Bug Status: Reported to Wavelink

 

Issue: Handheld Freezes in the Locked Full Screen Window; No Method to Get Back to Wavelink Enabler.

GetAttachment2

IMG00040-20090113-1517 *
Motorola MC-55
(Agent Not Found)
Symbol PPT-8846
(Update Complete)

 

Both of the devices are frozen at the Update Window Screen. While the PPT-8846 is at a hard lock, the MC-55 will return to the Enabler if touched. * The right image was modified to remove application specific information and agent addresses.

 

The Wavelink Enabler is having issues with the Full Screen Control and Update Window. As shown in the above screens, the Update Windows should be “Hidden” as it’s normal state. For some reason, the Update Window Remains locked and will not automatically unlock itself. The end result is the Enabler is frozen in an Update State. The subsequent updates will not affect the screen locked out state.

Work Around: The only work around for this issue is to restart the handheld or not lock the screen during updates. (aka warm boot/soft reset)

Known Versions: 3.50-56, 4-06-13 beta

Bug Status: Reported to Wavelink

Issue: Software which monitors for state changes of Wireless WILL lock handheld device or cause TCP/IP stack corruption.

 IMG00047-20090113-1522

IMG00046-20090113-1521
Symbol PPT-8846
(Corrupt TCP/IP Stack)
Symbol PPT-8846
(Idle Application Locked)

* The images have been blurred to remove any client specific information.

On the left you will see a corrupt TCP/IP Stack. You also will see that the wireless status indicator is changed to “no connectivity”. In this instance, the application which was sharing the call to the API for the wireless status lost the battle.

On the right, you will see the application (which previously lost the race) is frozen. The wireless feud seems to have caused the login credential boxes (the blank space above the numbers) to disappear.  The handheld is locked and unusable. Please note that the wireless status indicator (next to the battery) is missing from the screen.

Work Around: The only work around for this issue is to restart the handheld (aka warm boot/soft reset)

Known Versions: 3.50-56

Bug Status: Reported to Wavelink

For More Free Training by BIT Tangents: Go to Wavelink Training (Click Here)

Info on Author: Brenton Blawat is a Wavelink Consultant who has worked closely with the Avalanche product for over 5 years. He has integrated Wavelink AMC (and variants) into a multitude of corporations including but not limited to: Seneca Foods Corporation, American Eagle Outfitters, and Alexian Brothers Health System.

** BIT Tangents nor any of its contributors are liable for damages as a result of following these instructions. These instructions are intended as guidelines for best practices and are to be used at the executioners own risk! All re-productions / digital copies of this content must be approved in writing by an authorized representative of BIT Tangents. **

Read Full Post | Make a Comment ( None so far )

Installing Wavelink Avalanche Mobility Center 4.2.x

Posted on October 28, 2008. Filed under: Software Tangents |

By: Brenton Blawat

This is the quick guide for installing Wavelink Avalanche Mobility Center 4.2.X. 

 

avaexe

Double-Click on the Wavelink Installer

 

pic1

Select Next >

 

Custom: Select Individual Components

Site: Install all the functionality for Mobile Handheld Management; no Access Point Management.

Select Custom >

 

pic3

Console: The console is also referred to as the eServer. It enables remote administration of the Wavelink Avalanche Mobility Center.

Server: The server is the core of the application which links the communications between the eServer and DServer.

Database: This is the database engine. Later versions of AMC allow SQL Server Installation.

Site Agent Deployment: This enables software deployments to the individual devices from the server.

Avalanche Site: Avalanche is the software deployment and network profile tool

Mobile Manager Site: Mobile Manager is the access point and non handheld infrastructure management toolkit.

Select the Desired Features >

Select Next >

 

pic4

Select Next >

pic5

Select the Destination >

Select Next >

 

pic6 pic8

The AMC Product Will Install PostGreSQL if it doesn’t exist on the system.

pic7

The software will begin to install….

pic9

Enter registration keys if necessary >

pic10

Select Finish >

For More Free Training by BIT Tangents: Go to Wavelink Training (Click Here)

Info on Author: Brenton Blawat is a Wavelink Consultant who has worked closely with the Avalanche product for over 5 years. He has integrated Wavelink AMC (and variants) into a multitude of corporations including but not limited to: Seneca Foods Corporation, American Eagle Outfitters, and Alexian Brothers Health System.

** BIT Tangents nor any of its contributors are liable for damages as a result of following these instructions. These instructions are intended as guidelines for best practices and are to be used at the executioners own risk! All re-productions / digital copies of this content must be approved in writing by an authorized representative of BIT Tangents. **

Read Full Post | Make a Comment ( None so far )

Wavelink Application Known Bug Listing

Posted on October 24, 2008. Filed under: Software Tangents |

By: Brenton Blawat

While this could very easily go into a tangent about software design, this article is going to be focused on Bugs which one may see in the Wavelink Product. — What is the purpose? To provide methods by which one can work around the issue until Wavelink corrects the issues in the product.

So if you find an issue, let me know so I can post it here. Be sure to report these bugs to Wavelink as the issues cannot be corrected unless they are reported to Wavelink..

Wavelink Avalanche Frozen Screen / Loading Freeze / Blank Screen

Annoyance1

While running in a RDP (Remote Desktop) connection, it appears that the software is frozen. The Title Bar of Wavelink Avalanche Mobility Center is at the top of the screen, but the core application does not load into view. This has to do with some weird JAVA rendering that happens upon loading of the software.

Work Around: Minimize the Wavelink Avalanche Mobility Center then click on the application in the Task Bar. The screen will come back.

Bug Status: Reported to Wavelink

 

Wavelink Avalanche Blank Selection Criteria Issue

Selection Criteria Blank = Bad Thing

Not a lot of people understand the “inherent” blank selection criteria. By setting the selection criteria to nothing, it in fact, deploys to everything. This becomes more complicated when you start thinking form the perspective of using != (does not equal) in selection criteria.

E.G. If I were to say only IP != 10.10.10.10 & IP != 10.10.10.11, the software would deploy to every device. Why? Well and IP address can’t be two values at the same time, therefore, the software will deploy will deploy to every device.

Work Around: There currently is no work around for this issue.

Bug Status: Reported to Wavelink

 

Wavelink Avalanche Selection Criteria Logical Arguments

Model = “Sym50” & IP = 10.10.10.10 – 10.10.10.15 OR IP = 10.10.200.10 – 10.10.11.230

This issue has to do with Wavelink’s in ability to parse the statements as we would expect them to… The above statement would be evaluated as:

Model = “Sym50” & IP = 10.10.10.10 – 10.10.10.15

OR

IP = 10.10.200.10 – 10.10.11.230

Why? Well Wavelink uses a character sorting algorithm, with reads letter by letter and only evaluates AND and OR via parenthetical statements. This means for the example above, the server will first evaluate if Model = “Sym50” & IP = 10.10.10.10 – 10.10.10.15 are true. It then will check to see if IP = 10.10.200.10 – 10.10.11.230 is true.

In reality, you want the package to be deployed ALL of the Model = “Sym50”, and those IP addresses which are between IP = 10.10.10.10 – 10.10.10.15 OR IP = 10.10.200.10 – 10.10.11.230.

If and & and an | (OR) are used in the same statement, Wavelink should force the use of parentheses.

Work Around: Use Parentheses in your selection criteria. So for the example:

Model = “Sym50” & (IP = 10.10.10.10 – 10.10.10.15 OR IP = 10.10.200.10 – 10.10.11.230)

The Wavelink Server will evaluate are the IP addresses between (IP = 10.10.10.10 – 10.10.10.15 OR IP = 10.10.200.10 – 10.10.11.230)? Are the model numbers of those units equal to “Sym50”?

Bug Status: Reported to Wavelink

 

NEW! Wavelink Avalanche Duplicate Devices

DuplicateDevices

It appears a bug they once upon a day ago fix has re-entered the system. It appears that the software is reporting duplicate handheld entries for devices with the same MAC addresses, Terminal IDs and IP addresses for the handhelds.

Work Around: Manually delete the duplicate devices from the server. Obtain a script from Wavelink to delete these duplicate devices

Bug Status: Reported to Wavelink

NEW! Wavelink Avalanche Group Selection Criteria Issue

Group = "MobileDeviceGroupName”

This issue has to do with the ability to send software out to Mobile Device Groups. The key behind this was to group sets of handhelds into Mobile Device Groups.

E.G. One of my clients created a mobile device group for each individual location they have for controlled deployments (1050 locations). In doing this they wanted to send specific software to groups of stores via Group = "MobileDeviceGroupName”.

The result of the selection criteria is the same as leaving the selection criteria blank; it will deploy the software to EVERY handheld in the system. Architectural flaw, it needs to be corrected.

Work Around: There currently is no work around for this issue.

Bug Status: Reported to Wavelink

UPDATE! Wavelink Avalanche Enabler v3.50-56 Launch Times

There seems to be an inherent bug in the Wavelink Enabler v3.50-56 where it takes 5 seconds for any application to launch from their “Desktop Interface”. It seems to be linked, or ironically similar, to their default auto-launch time of 5 seconds. Any and all applications (including extensions of .exe and .ica) take 5 seconds to launch.

Work Around: There currently is no work around for this issue other than waiting 5 seconds for each application.

Bug Status: A test Enabler has been sent to me for testing. I will provide it here if it appears to fix the issue!

 

For More Free Training by BIT Tangents: Go to Wavelink Training (Click Here)

Info on Author: Brenton Blawat is a Wavelink Consultant who has worked closely with the Avalanche product for over 5 years. He has integrated Wavelink AMC (and variants) into a multitude of corporations including but not limited to: Seneca Foods Corporation, American Eagle Outfitters, and Alexian Brothers Health System.

** BIT Tangents nor any of its contributors are liable for damages as a result of following these instructions. These instructions are intended as guidelines for best practices and are to be used at the executioners own risk! All re-productions / digital copies of this content must be approved in writing by an authorized representative of BIT Tangents. **

Read Full Post | Make a Comment ( None so far )

Understanding the Files in a Wavelink Avalanche Enabler v3.50-56

Posted on October 23, 2008. Filed under: Software Tangents |

By: Brenton Blawat

This section will provide detailed information of an Enabler which was designed for a Symbol Device v3.50-56. While there are different files on different devices, the core of the applications remain the same.

LOCATION

FILENAME

DESCRIPTION

\Application\
fldrApplication

Avalanche\fldrAvalanche

This directory contains the Avalanche Enabler, Network Profiles, Software Packages, and all required files to for Wavelink’s Enabler to restore packages upon a cold boot of the device.

\Application\
fldrApplication

StartUp\fldrStartUp

This is a placeholder directory which automatically copies all files contained within to the \Windows\ directory upon a cold boot of the device.

\Application\
fldrApplication

WL-Enabler.cpy

flWLenabler

Copies the Wavelink StartUp .lnk file to the \Windows\Startup\ for initialization on a cold boot of the device.

\Application\
fldrApplication

WL-Enabler.reg flWLenabler_reg

The registry files which are required for Wavelink to properly function upon a cold boot of the device.

..\Avalanche\fldrAvalanche

Config\fldrConfig

This directory is for all of the configuration files for the Avalanche Enabler.

..\Avalanche\fldrAvalanche

Packages\fldrPackages

This is the location where all of the software packages are stored on the handheld

..\Avalanche\fldrAvalanche

AS-Enabler.datflAS-Enabler_dat

This is file is responsible for specifying where the core Enabler files, registry entries, backup information, should be stored on the device. It is processed by Wavelink during an enabler upgrade.

..\Avalanche\fldrAvalanche

AvaDev.dllflAvaDev_dll

This Device driver for the Enabler.

..\Avalanche\fldrAvalanche

AvaInit.datflAvaInit_dat

This file specifies the location for where the avalanche initialization files should be located. This also specifies shortcuts to place on the device.

..\Avalanche\fldrAvalanche

AvaInit.exeflAvaInit_exe

This executable is responsible for the initialization of the Avalanche Software.

..\Avalanche\fldrAvalanche

Avalanche.lnkflAvalanche_lnk 

This shortcut is copied to multiple locations on the handheld to open the application.

..\Avalanche\fldrAvalanche

Avalanche.wleflAvalanche_wle

This specifies what device drivers and scanner (physical) drivers to use on the device.

..\Avalanche\fldrAvalanche

AvaMon.lnkflAvaMon_lnk

Shortcut to the Avalanche Monitor application.

..\Avalanche\fldrAvalanche

AvaScan.dllflAvaScan_dll

This is the device driver for the scanner to use with the scan to config.

..\Avalanche\fldrAvalanche

Enabler.exeflEnabler_exe

This program is the graphical interface for use on the device.

..\Avalanche\fldrAvalanche

Enabler.udflEnabler_ud

This file specifies all of the parameters which are useable for the system and how to use them. It also includes error messaging capabilities.

..\Avalanche\fldrAvalanche

Enabler.uiflEnabler_UI

This is the background image for the Avalanche Enabler.

..\Avalanche\fldrAvalanche

model.datflmodel_dat

This file specifies what the model number of the device is for packaging purposes.

E.G: The file reads: Sym8846

..\Avalanche\fldrAvalanche

Monitor.exeflMonitor_exe

This is the background process which controls communications between the dServer and the Enabler.

..\Avalanche\fldrAvalanche

MUQuery.exeflMUQuery_exe

This executable is responsible for querying the device for power, WLAN, etc.

..\Avalanche\fldrAvalanche

Setup.dllflsetup_dll

The driver for the setup of the system.

..\Avalanche\fldrAvalanche

UPDateEnabler.exeflUPDateEnabler_exe

This executable is responsible for updates to the Enabler.

..\Avalanche\fldrAvalanche

WlComDlg.dllflWLComDlg_dll

This is the Wavelink driver for communication dialogs.

..\Avalanche\fldrAvalanche

WLSymbol.dllflWLSymbol_dll

These are the drivers to use Symbol specific hardware.

..\Avalanche\fldrAvalanche

WLUNI.dllflWLUNI_dll

Wavelink’s Universal Networking Interface driver.

..\Avalanche\fldrAvalanche

WLWEPRot.dllflWLWEPRot_dll

This is the Wavelink driver for WEP key rotation.

..\..\Config\fldrConfig

_AVACFG.PRFfl_AvaCFG_prf

This file contains all of the settings which are being sent via the EnablerCfg from the server. This file also may contain values which are not pushed via the server, however, they remain within this file regardless of what EnablerCfg is pushed to it.

..\..\Config\fldrConfig

_DEVPROP.PRFfl_DEVPROP_prf

This file is a file which is populated prior to communicating to the server. It provides the server with items which include: current network profile, MSCHAP information, enabler info, agent address, etc..

..\..\Config\fldrConfig

_IP.PRFfl_IP_prf

If static assignment, Wavelink provided addresses, or DHCP is enabled, this file will tell the enabler what to expect for acquiring an IP address.

..\..\Config\fldrConfig

_LOCAL.PRFfl_LOCAL_PRF

This is the GUID of system. When copying files, this file MUST be excluded from the system as GUIDs are required to be unique… if multiple GUID’s exist, the Enterprise Server will only recognize one handheld at a time changing the MAC and IP every connection to the server.

..\..\Config\fldrConfig

_NETPROP.PRFfl_NETPROP_prf

This file is the file which associates the Network Profile to the device.

..\..\Config\fldrConfig

_WEPCFG.WKFfl_WEPCFG_WKF

This is the WEP configuration file. This will be populated with encrypted WEP information if WEP is used.

..\..\Config\fldrConfig

Avalanche.alk
fl_Avalanche_ALK

This file is responsible for the mapping the launch-able icons on the desktop of the Enabler.

..\..\Config\fldrConfig

Avalanche.BAKfl_Avalanche_ BAK

This is the backup file for the Wireless Settings specified in the Network Profile.

..\..\Config\fldrConfig

Avalanche.UNIfl_Avalanche_ UNI

This is the backup file for the Wireless Settings specified in the Network Profile. Specifically, this is the backup for the Universal Network Interface.

..\..\Config\fldrConfig

MAC.tmpfl_MAC_tmp

This is a temporary file which contains the MAC of the unit. This file should be empty on the device.

..\..\Packages\fldrPackages

Drive\ fldrDrive

This directory is created for the extrapolated packages. For example, when a package needs to be in the Program files directory, the file / folder structure would be the following: Folder C, Folder Program Files, Folder ApplicationName, File. Basically the Enabler lays out the restoration file structure within this directory.

..\..\Packages\fldrPackages

Files\fldrFiles

This directory is where the Enabler organizes the files which have been deployed to the device. This directory is utilized on cold boot to restore all files via it’s sub directories.

..\..\..\Files\fldrFiles

APPS\fldrAPPS

This directory is responsible for

..\..\..\Files\fldrFiles

AVA\fldrAVA

This directory is where the backup files for the Avalanche Enabler are located. This includes _AVACFG.PRF and Avalanche.alk.

..\..\..\Files\fldrFiles

WIN\fldrWIN

This directory is where two Wavelink drivers are located for restoration upon a cold boot of the device.

..\..\..\Files\fldrFiles

WLRMTCTL\fldrWLRMTCTL

This is Wavelink’s Remote Control (aka WLRMTCTL) Software backup. This directory contains files to make the remote control software function properly on the handheld.

..\..\..\Files\fldrFiles

WLRMTCTL.PMFflWLRMTCTL_pmf

This file is the file which contains the Checksum for each package manifests. This file is the reference file during a Synchronization to ensure all files are in their proper locations and are not corrupt.

..\..\..\Files\fldrFiles

WLRMTCTL.PPFflWLRMTCTL_PPF

This file is a secondary checksum which contains more checksum information for the Enabler.

..\..\..\..\AVA\fldrAVA

_AVACFG.PRFfl_AvaCFG_prf

This is the backup copy of the file contains all of the settings which are being sent via the EnablerCfg from the server. This file also may contain values which are not pushed via the server, however, they remain within this file regardless of what EnablerCfg is pushed to it.

..\..\..\..\AVA\

fldrAVA

Avalanche.alk
fl_Avalanche_ALK

This file is the backup copy of the file which is responsible for the mapping the launch-able icons on the desktop of the Enabler.

..\..\..\..\WIN\fldrWIN

ASConnector.dll
flASConnector_dll

This DLL is Connector service for the Enabler. This DLL is responsible for the TCP connection between the handheld and the dServer.

..\..\..\..\WIN\fldrWIN

WLSmsTrigger.dllflWLSmsTrigger_dll

This DLL is what enables a message box for SMS messages with the Wavelink Enabler.

For More Free Training by BIT Tangents: Go to Wavelink Training (Click Here)

Info on Author: Brenton Blawat is a Wavelink Consultant who has worked closely with the Avalanche product for over 5 years. He has integrated Wavelink AMC (and variants) into a multitude of corporations including but not limited to: Seneca Foods Corporation, American Eagle Outfitters, and Alexian Brothers Health System.

** BIT Tangents nor any of its contributors are liable for damages as a result of following these instructions. These instructions are intended as guidelines for best practices and are to be used at the executioners own risk! All re-productions / digital copies of this content must be approved in writing by an authorized representative of BIT Tangents. **

Read Full Post | Make a Comment ( 2 so far )

Understanding Wavelink Auto Run, Support, and Application Packages

Posted on October 22, 2008. Filed under: Software Tangents |

By: Brenton Blawat

To most problems, it is recommend most Users should RTFM and STFW. Q: What happens when reading the manual leaves you even more confused than beginning and searching the web results in NO coherent results for the product?!? A: Well you get my BIT Tangents to listen to…. 😉

Understanding Packages

There are four types of Wavelink packages which can be created:

Auto Run – Provides the ability to execute multiple commands after the deployment of a package. So what exactly does this mean?

img1

The execution of Auto Run commands don’t actually work as you would expect. The Auto Run commands have to be specified in the “Startup Command”. While you’d think you can specify multiple commands, the commands don’t always parse correctly from the Package Builder for an Auto Run Package. As a result, Wavelink Support, and my recommended methodology is to create a auto execution file within the package named : autoexec.bat

This file .BAT file is only allowed to have 1 command contained in it. This is a result of a bug within the Package Builder Software and the way the mobile devices parse the file. As a result, and more perplexing, the a caveat of the software is that it only accepts the following:

1. Single Line

2. No Triggers

3. No spaces to execute other items.

4. Startup command must read exactly: autoexec.bat

Note: The startup command MUST say only autoexec.bat (NO relative path to the file is required) and the autoexec.bat must be configured in the ‘APPS’ ‘Install Drive’ within the package for proper execution (install path should be left blank). Surprisingly enough, the Enabler is smart enough to know that by saying ‘autoexec.bat’ it needs to look in the \Application\Avalanche\Packages\Files\AVA\APPS\APP_NAME\ directory for the file.

Commands which will NOT work:

Copy \Application\Brent.CPY \Windows\Brent.CPY

<– technically the spaces are considered triggers. –>

Cmd.exe /c brent.bat

<– again the use of triggers –>

Commands which WILL work:

\Application\brent.bat

<– My recommended usage –>

\Program Files\BrentsApplication\brent.bat

<—While there is a space, it is still a singular line. –>

Getting the Auto Run to Work correctly

I always recommend two .BAT files with the use of Auto Run Packages. With the inability of the Enabler to parse multiple lines in the autoexec.bat, I call a secondary .BAT file to execute the commands I need to occur. This provides me with a stronger command base and the ability to run IF EXIST, IF NOT EXIST, DEL, COPY, MKDIR, >, ECHO, or any other command that is supported by Pocket CMD.

#1 Setup the autoexec.bat – Create a new .BAT file named autoexec.bat

#2 Mapping to second .BAT – place in the autoexec.bat a single line that states the location of the new .BAT file. The location MUST be the absolute location of the .BAT file.

E.G.

\Application\brent.bat

or

\Application\Avalanche\Packages\Files\AVA\App_Name\Brent.bat

#3 Create the second .BAT file – Create the secondary .BAT file on the system. Place as many command line parameters in the .BAT file as necessary for the package.

#4 Placing of the files within the package – The Autoexec.bat file MUST be located in the ‘APPS’ ‘Install Drive’. The second .BAT should be located in either ‘C’ ‘Install Drive’ and the ‘\Application\’ ‘Install Path (first example) or the the ‘APPS’ install drive (second example).

 

** For more information on building this package; read my Creating an Auto Run Wavelink Avalanche Package.

**Also, for those devices that do not natively support .BAT extensions, you will need to add .BAT registry customization by reading my .BAT Execution for Pocket PC 2003 article.

Support – This provides the ability to place files on the device. In short, the Support Package enables a user to place specific files into specific locations.

Note: While Support Packages do not support the autoexec.BAT syntax, the Support Packages do enable the Post Install Scripts. This allows certain registry entries and files to be imported into the system via their scripting engine.

My Recommendation: Use Support Packages when you want to place files onto the device without the requirement of additional commands. If additional commands are required, create an Auto Run Package.

Application – This provides the ability to place files onto the device, and adding a launch-able icon to the Enabler.

My Recommendation: Don’t use this feature. This all goes back to the Software Profiles. I strongly recommend setting up Software Profiles for individual departments for the handheld devices. In this create an enabler confi package to include the Applications which are required. This enables the Users of these devices to have the same icons and same items on their desktops. Software Profiles are much easier to support and the “one offs” will be eliminated.

Config – This is a method to configure or change a specific file. I’ve avoided the use of Config Packages as there are better methodologies to get around using this type of packages.

My Recommendation: Don’t use this feature. If a file need to be configured, redeploy the file as a Support Package or redeploy the entire software package. This a better solution as upon an update of a software package on the Avalanche server will only send the specific files which were updated; not the entire package.

For More Training: Go to Wavelink Training (Click Here)

Info on Author: Brenton Blawat is a Wavelink Consultant who has worked closely with the Avalanche product for over 5 years. He has integrated Wavelink AMC (and variants) into a multitude of corporations including but not limited to: Seneca Foods Corporation, American Eagle Outfitters, and Alexian Brothers Health System.

** BIT Tangents nor any of its contributors are liable for damages as a result of following these instructions. These instructions are intended as guidelines for best practices and are to be used at the executioners own risk! All re-productions / digital copies of this content must be approved in writing by an authorized representative of BIT Tangents. **

Read Full Post | Make a Comment ( 2 so far )

Importing a New Avalanche Mobility Center Package

Posted on October 1, 2008. Filed under: Software Tangents |

By: Brenton Blawat

Wavelink’s Avalanche Mobility Center (AMC) does not have an intuitive interface for importing packages into the application. I’ve decided to provide step-by-step instructions on how to import ‘New Packages’ (also creating a ‘Software Profile’) into AMC application.

Note: This document has been created utilizing Avalanche Mobility Center 4.2. While the newest version is well above this, the core program is the same.

1. Log into the AMC (default credentials are: U:amcadmin | P:admin)

img1

2. Select Software Profiles

img2

3. Select Add Profile

img3

4. Enter a Name (TestCampusA) for the Software Profile.

Note: Software Profiles

There are two methods by which software profiles can be setup. The first method, and most commonly used method, is creating a new Software Profile for each individual package. While this is an acceptable methodology for setting up packages, it isn’t the method by which the feature was intended.

The second methodology, and typically my recommended solution, is creating Software Profiles per each device role (or location the device will be). For our example, I use “TestCampusA” to describe devices in CampusA that are in test (I could have used “LibraryPDAs” to describe the devices in the Library rather than Campus). This will enable a network administrator to logically segment all packages that should be sent to the set of devices in “TestCampusA”.

While the major disadvantage of the second topology is that a deployment of a single software package to an individual device is not possible, it is typically the organization goal to get all devices configured uniformly. This is why the second methodology is the best methodology as all devices must adhere to the template created in the Software Profile. Likewise, if testing needs to be conducted on several devices, a new software profile, such as “TestCampusA” can be created to deploy new test packages. – and the BIT Tangent ends.

 

img4

5. Select the New Software Profile

Note: A bug / “undocumented feature” in AMC is that doesn’t auto-select the new Software Profile which was created. This step will not be necessary in future releases.

 

img5

6. Select the Software Packages Tab — > Select Install

img6

7. Select — > Browse to the .AVA file you want to import — > Select Next

img7

8. Select YES, I agree — > Select Next >

img8

9. Select Finish

img9

10. Select the New Package — > Select Enable

Note: A bug / “undocumented feature” in AMC is that doesn’t auto-select the new Software Package which was created. This step will not be necessary in future releases.

 

img10

11. Select Selection Criteria — > Enter Selection Criteria for the Software Profile (E.G. IP = 10.10.10.10)

This will set the Selection Criteria for the entire Software Profile of “TestCampusA”. So now, the question –

Q: How can I tell a specific software package to ONLY install on a specific set of devices in this group?

A: This can be done when creating the Software Package. Typically the Selection Criteria of ModelName = “SYM8800” or ModelName = “SYMMC50” should be used on the Selection Criteria of a package (to filter the package to a specific Model Type or device). As I will describe in a different post, DO NOT filter by ‘IP Address ranges’ in Selection Criteria for the Software Package; only the Software Profiles.

 

img11

12. Select the General Settings Tab — > Select Enabled

img12

13. Select Save — > Select Yes to Save Changes

Assigning New Software Profile to a New Location

Now that the Avalanche Software Profile is populated with a Software Package, it needs to be assigned to a Server Region, or specific deployment server (dserver). To do this following steps can be performed:

 

img13

1. Expand My Enterprise — > Expand Your Server Region (Arlington Heights) — > Select the dServer (Salt Creek)

Note: AMC provides the ability to deploy the Software Profile to a granular set of locations. This strictly adheres to the hierarchy scheme of the system. If you deploy the software profile to the “My Enterprise”, the software will propagate to all of the Regions and their dServers. Likewise, if it is deployed to a specific Region, it will propagate to all of the respective Region’s dServers. BE CERTAIN to select the right location when deploying the package, as upon Universal Deployment, the AMC will configure the respective handhelds for deployment of that package.

 

img14

2. Select Software Profile Tab — > Select Add

img15

3. Select the New Software Profile (TestCampusA) — > Select OK

img12

4. Select Save — > Select Yes to Save Changes

img16

5. Select Tools — > Select Task Schedule

img17

6. Select Add…

img18

7. Select Universal Deployment as Task Type — > Select Next >

img19

8. Select My Enterprise or Select Region or Select dServer — > Select Next >

img20

9. Select Perform the task now. — > Select Next >

img21

10. Select Next >

img22

11. Select Finish >

img17

12. Select Close.

The Enterprise / Region(s) / dServer(s) will now be populated with the Software Profiles (and thus the Software Packages contained in the Software Profiles).

For More Free Training by BIT Tangents: Go to Wavelink Training (Click Here)

Info on Author: Brenton Blawat is a Wavelink Consultant who has worked closely with the Avalanche product for over 5 years. He has integrated Wavelink AMC (and variants) into a multitude of corporations including but not limited to: Seneca Foods Corporation, American Eagle Outfitters, and Alexian Brothers Health System.

** BIT Tangents nor any of its contributors are liable for damages as a result of following these instructions. These instructions are intended as guidelines for best practices and are to be used at the executioners own risk! All re-productions / digital copies of this content must be approved in writing by an authorized representative of BIT Tangents. **

Read Full Post | Make a Comment ( None so far )

    About

    Business and Information Technology Tangents is dedicated to providing quality content while informing the world about technology.

    RSS

    Subscribe Via RSS

    • Subscribe with Bloglines
    • Add your feed to Newsburst from CNET News.com
    • Subscribe in Google Reader
    • Add to My Yahoo!
    • Subscribe in NewsGator Online
    • The latest comments to all posts in RSS

    Meta

Liked it here?
Why not try sites on the blogroll...