eBox 2300 Surveillance Video System
Computer Network Programming
Author: Carlos Daboin
Instructor: Janusz Zalewski
Florida Gulf Coast University
The eBox 2300 is a thin client “sometimes called a lean client, is a low-cost, centrally-
managed computer devoid of CD-ROM players, diskette drives, and expansion slots”. Also, “a
thin client accesses programs and data from a server instead of storing them locally, and the
software that performs the majority of its operations reside on a server rather than the local
computer” (Kathy Chung). The eBox 2300 is the device that I’m using to develop an application
that makes the eBox 2300 accessible to clients/user in a LAN or WAN. The application that I’m
working for the computer network project is a client/server application develop on C#, and the
application’s function is to transmit and receive video using sockets an ports.
The Server application main use is to stream live video capture from an USB camera
connected to eBox 2300 over a network. The server application runs under the Windows CE 6.0
operating system, this OS is design and customize base on the needs of the server streaming
application. The OS and server application will be develop on more powerful and faster
computer .Then, a Windows 6.0 CE image and the C# server application will be deployed on the
The Client application main use is to receive the streaming video from eBox2300 and
display on the computer that runs this application. The client application will be deployed on
Windows PC’s, because the .net framework needed to run the C# client application. After, client
application was deployed the user will be able to connect to the server application running on
the eBox 2300 and see the live video streamed from the remote location.
The eBox 2300 is been for my computer networks project as video surveillance web
camera that streams video over a network, then remote client running a client application is
able to receive the media transmission. This project can be expanded by adding phidgets to
increase eBox 2300 interaction the real environment events, for example, adding a sensor that
detects movement, and servo motor the makes the camera point to the source of movements.
The problems trying to develop video streaming application over a network using a thin
client are base on three mayor issues.
The first and most important issue is to develop and operating system capable to run
software applications, to communicate with external devices, and to transmit data over a
network. The operating system have to be designed and test in a more powerful computer,
then the OS has to be customized base on the video stream application, so when deployed will
make the eBox 2300 a capable device to run a video server application, to sent stream video
over a network, and the most import communicate with an USB device, camera.
OS Image Deployment Media
Master PC/Develop OS Image eBox 2300/Thin Client
Second, develop an application that runs and executes under the deployed eBox 2300
Operating System. The application has to interact and communicate with the USB camera.
Then, stream the USB camera video feed over a network to users/clients in the same LAN or
Third, develop an application that will receive the video stream over the network. The
application has to indentify that the streamed video comes from the eBox 2300, and has to
display the video on a friendly graphic interface for user connected to the same LAN or WAN.
The prospective solution is going to cover possible alternatives to solve the three mayor
problems mentioned in the problem statement. The processes to transform an eBox 2300 into
a camera sever that streams video over a network are the following:
Deploy an Operating System:
Windows Embedded CE 6.0 Image on device, eBox 2300. This look the best option,
because the eBox includes a starter kit that gives the basics of how to deploy and develop
Windows Embedded CE 6.0 operating system on an eBox, no matter what model it is.
The steps needed to develop the Windows CE 6.0 image (Windows PCs):
1. Install Visual Studio 2005; the express edition supports Windows CE tools, and
SDK. VS 2005 is free at; http://www.microsoft.com/express/2005/ (Microsoft).
The IDE is the platform to develop and deploy the Operating System.
2. Download and run the VS 2005 executable installation file.
3. Windows Embedded CE 6.0 Platform Builder. The 120 days trial version of Windows
Embedded CE 6.0 is available at; http://www.microsoft.com/windowsembedded/en-us/
4. VS2005 must already be installed onto the develop station.
5. Also, you can Insert the Jumpstart CD to install the platform builder, then run the
auto executable, if the installer does not run automatically.
6. Make sure X86 CPU support is selected during installation.
7. Install the Board-Support-Package, To install this BSP, simply double click on the
ICOP_Vortex86_60B_BSP.MSI file located in the BSP directory on the jumpstart CD
8. Install VS2005 CoreCon Component, CoreCon is used to establish link between CE 6.0
device and VS2005 development station. The file is included in the Jump Start CD, in the
“CoreCon” folder. To install this component, double click on CoreCon_x86_VS2005.MSI
file in the Jump Start CD’s “CoreCon” directory.
9. Install Windows Embedded CE 6.0 SDK, From VS2005 IDE, select Project | Add New
SDK… to bring up the SDK Property Pages screen
10. Enter eBox2300_WinCE600_SDK as the name for the SDK
11. Fill in the company name and company website information
12. On the left side of SDK Property Page, click on Install and enter MSI folder path
and MSI file name on the right side. Use the default path, and enter
eBox2300_WinCE600_SDK.msi as the file name.
13. On the left side of SDK Property Page, click on Development Languages and select
both Native and Managed development support.
14. Click on the Apply and then OK button to complete the Add New SDK process.
For detailed instructions on how to set Windows Embedded CE 6.0 Development Tools,
Windows Embedded CE 6.0 SDK, please refer to this link, http://www.embeddedpc.net/
download/doc/eBox2300_CE60_JumpStart_Rev3.5.pdf (Phung, Samuel.)
After deployment, Windows Embedded CE 6.0 image should look very close to the
Using a very small operating system that can be completely boot from an USB flash drive
or Compact Flash card can work as a base for software applications and communicate with
external devices. Linux has a very small version of Linux (Puppy Linux) that can be booted from
a 250MB USB key or a 250MB compact flash card.
How to create a USB Puppy Linux:
• 128MB or larger USB Stick
• PC with a CD reader/burner
Puppy Linux contains its own Universal Installer so installation is fairly straightforward.
1. Download Puppy Linux. http://www.puppylinux.org/downloads (PuppyLinux.org)
2. Burn the ISO to a CD.
3. Start your computer via Puppy Linux CD.
4. Once Puppy has loaded, from the Taskbar, Click: Start-> Setup-> Puppy universal installer
5. Follow the onscreen instructions which will walk you through the Puppy USB installation process
6. When finished with the Puppy USB install, reboot your PC and go into system BIOS to change
your boot order to boot from the USB device.
7. Save your settings and reboot your PC.
After boot up, Puppy Linux should look very close to the picture below.
Deploy a software application:
The software application is strictly related to the operating system, so the programming
language used for development will be determinate after an OS is selected. Java is a better
choice to work under a Linux environment, and C# or VB is the best choice to work Windows CE
6.0, because the .Net framework. Therefore, the programming language needs to communicate
with media devices; Java can use the JMF, Java Media Framework. C# and VB can communicate
with media devices using the .net frame work. After choosing the programming language,
create and client/server application that will stream video from the eBox 2300 and then a client
application running on computers connected to the network. Finally, the client application will
have a GUI, graphic user interface, which display the video streamed over the network, and will
interact with the remote computer’s user.
The project development starts by connecting the eBox 2300 and the Windows PC that
deploys the embedded CE 6.0 image and the C #application, on the same network. Then,
Ethernet cables will be the physical media that connects the eBox2300, and PC to the network,
because the eBox 2300and PC have network ports. Therefore, there is path between the eBox
2300 and PC for data communication over a network.
Windows Embedded CE 6.0 is the operating system that the eBox 2300 runs, and the OS
is design it and customize it using Visual Studio 2005. The OS will have all media drivers, and
networking utilities to be able to communicate with the network and the USB camera, also
the .net framework to help the C# application and the USB drivers work together. As soon as
the OS is completed the image has to be deployed over the network until it reaches the eBox
2300. Therefore, the eBox 2300 hardware becomes a thin computer able to talk to a network
and USB devices.
OS Image Configuration and Deployment
1. Open Visual Studio 2005; select new project.
2. Select Platform Builder for CE 6.0, then OS Design (OS_2300).
3. In the BSP (Board Support Packages), select ICOP_Vortex86_60B: x86
4. In the design templates selection step, select Thin Client.
5. Design template, select Windows Thin Client.
6. In the applications & media selection step, select .NET, Windows Media Audio/MP3,
and Windows Media Video/MEPEG-4 Video.
7. In the networking & communications step, select Local Area Network, and Wide
Area Network. The OS design wizard will finish after this step.
Catalog Items View Tap (Enhancing the OS Design)
8. Select Microsoft USB camera driver for future use with server application.
9. Select ConMan_ 86 files components for communication and application deployment.
10. Select MJPEG Decompression Filter for compressed media.
11. Expand Third Party catalog folder, and select Vortex86_Audio and Vortex86_Display, to
enable eBox 2300 media interfaces.
1. From VS2005 IDE, select Build | Configuration Manager. From the Active solution
configuration selection options, select ICOP_Vortex86_60B x86 Release
2. From VS2005 IDE, select Project | OSeBoxCamServer (Your OS Name) Properties
3. Click to expand Configuration Properties tree on the left side of the screen.
4. Click to high-light Build Options, a list of Build Options with check boxes will be shown
on the right side of the screen.
5. Select Enable eboot space in memory (IMGEBOOT=1). This option adds support for
Ethernet debugging by bundling the Ethernet boot loader in the image.
6. Select Enable ship build (WINCESHIP=1).This option will enable a retail build and
suppress debug messages.
7. Disable KITL – Make sure the Enable KITL (no IMGNOKITL=1) check box is NOT selected.
8. Click to high-light Environment on the left side of screen.
9. Enter new variable name and set associated value for the following environment
IMGRAM128 = 1 supports hardware with 128MB of RAM.
PRJ_BOOTDEVICE_ATAPI = 1 designates booting from ATAPI device
PRJ_ENABLE_FSREGHIVE = 1 enables Hive-based registry function.
PRJ_ENABLE_FSMOUNTASROOT = 1 enables external file to mount as root
10. From the VS2005 IDE, select Build | Build Solution to build OS image from the OS
11. From VS2005 IDE, select Target | Connectivity Options, Target Devise t set to
eBox2300_WinCE600_SDKx86 Device. Download and Transport set to Ethernet.
Debugger set to KdStub.
12. Turn on power and boot up eBox-2300 with the provided Windows CE SDK boot image.
It will boot to DOS and provide the menu selections. Select 4.
13. After eBox-2300 boots-up and sends a boot-me request, the Ethernet Download
Settings dialog screen, select device ID listed in the Active target devices list box.
14. From VS2005 IDE select Target | Attach Device.
15. After the image download process is completed, eBox-2300 will load the Windows CE
I’m still working on Operating System enhancement and configuration; I will make
updates in future reports or final report.
Using the same IDE, the C# client/server application is develop. The application
simulates a TCP communication between two hosts, one of which is a server (eBox 2300), the
other one being a client (remote PC). The two hosts have IP addresses and a common port
number. The server application running on the eBox 2300 uses a “socket (the base object with
which to communicate), and then it is bound to a specific endpoint, a mix between an IP
address and the port number on which to listen with the "Bind" member” (Hare, March).
Moreover, the server application will receive the video data capture from the USB camera, and
then become a stream interface between the eBox 2300 and the remote PC.
From eBox 2300(with CE 6.0 image created in the earlier steps running):
1. Click on Start | Run from CE 6.0 desktop with the cmd command to open a console
2. Type IpConfig to view the eBox’s assigned IP-address
3. Double click on My Device and open the Windows folder.
4. Double click on ConmanClient2.exe follow by double click on cMaccept.exe to launch
Corecon connection service.
From VS2005 IDE
5. Set the target device to “eBox2300_WinCE600_SDK x86 Device”
6. Select Tools | Options
7. Click to expand the “Device Tools” folder and select the “Devices” sub-folder.
8. Select eBox2300_WinCE600_SDK from the list of available platform in the Show devices
for platform combo text box.
9. Click on the Properties button to bring up eBox2300_WinCE600 x86 Device Properties
10. Click on the Configure button to bring up Configure TCP/IP Transport
11. Select Use specific IP address and enter eBox-2300’s IP address
12. select Tools | Connect to device
13. Select eBox2300_WinCE600_SDK from the list of available devices, and click on the
14. Select Debug | Start Debugging to bring up the Deploy eBox2300_Demo screen.
15. Select eBox2300_WinCE600_SDK and click Deploy
Server Application Development
1. Simple C# form to test deployment and event handling over CE environment.
2. Develop server socket application to ensure communication between client and
3. Develop API class or module to communicate USB camera and server application.
4. Enhance previous socket application to stream video over a network.
The development of server application is on step 2, socket application, and still under
configuration and testing. After the application completely tested and debugged, then it will be included
in the project.
The client C# application needs to create a socket and connect to the remote host, eBox
2300, to receive the streamed video over the network. Then, this application will display a
graphic user interface on the remote PC that start and stop the connection to the server
application. Finally the GUI is the interface with the remote PC’s that display the video coming
from USB camera connected to the eBox 2300.
Client Application Development
1. Develop C# client socket application to ensure communication between client PC
and eBox 2300 server application
2. Enhance previous socket application to display the video stream coming from the
server application in the eBox 2300.
The development of server application is on step 1, socket application, and still under
configuration and testing. After the application completely tested and debugged, then it will be included
in the project.
Video Surveillance Components
The video server system will be implemented using the following hardware:
• An eBox 2300, thin client.
• Windows PC that deploy the Operating System, and the client/server
• Logitech USB camera.
• Ethernet cables to connections to the network.
The video server system will be implemented using the following software:
• Visual Studio 2005 to design operating system, and the development of
client/server software application.
• The Operating system that will deploy on eBox 2300 is Window
Embedded CE 6.0.
• The programming language to use C# for client and server applications
• Framework dot Net.
• Microsoft USB driver to connect OS/C# to USB camera.
• The project will make the eBox 2300 a thin client to be accessible from remote
users. The communication between the eBox 2300 and the remote user is over
TCP/IP networks infrastructures.
• The project will demonstrate the use of a network to communicate with remote
devices, in this case an USB camera attach to eBox 2300.
• The project demonstrates the use of top level applications, like a C# client/server
application, to send and receive data over a network, to communicate with an
USB device, and to create user interfaces to interact with remote device.
• The project might be the starting point of many remote applications that can be
combined with remote video display for future network systems developments.
 "Windows Embedded Developer Center." Microsoft Windows Embedded
Developer Center. 10 Sept. 2008. 10 Sept. 2008
 "Puppy Linux." Downloads | Puppy Linux. 12 Sept. 2008. Puppylinux.org. 12
Sept. 2008 <http://www.puppylinux.org/downloads>.
 "Visual Studio Express Editions." Visual Studio Express Editions. 2008. 12 Sept. 2008
 Hare, March. "Client-server application in C#, using the TCP/IP network
protocol." C# Home. 29 Dec. 2004. 23 Sept. 2008 <http://www.csharp-
 Phung, Samuel.
3.5.pdf." EBox-2300 Windows Embedded CE 6.0 Jump Start Guide. 2005. ICOP
Technology Inc. 10 Sept. 2008
 Chung, Kathy. "Thin Client." What is a thin client? 23 Mar. 2006. 8 Sept. 2008