computer hardware and network setup Results


Page 1 of 3.
Results 1...20 of 51

Sponsored Links:



I recently set up a wireless network in my house (Linksys)
and almost everything runs smoothly. One computer is
connected to the network by a network adapter (Windows XP
OS), and the other is connected to the router directly,
with an ethernet cable (Windows XP OS also). The problem I
am having is that the computer that is hooked into the
router via ethernet cable refuses to run Network Setup
Wizard (I want to share folders and files on the network) I
tried launching the wizard from the full version of Windows
XP Home edition; I get a message saying that files will be
installed in order to run the wizard, unless I have Windows
XP installed already, in which case the wizard would run
immediately. I click yes, and I see some files being
extracted, then once that finishes, nothing happens. I try
to run netsetup.exe, but that gives me the same message.
The Network Setup Wizard works fine on the computer using
the network adapter to get onto the network. My hardware is
set up correctly, from what I can tell, as this is the only
problem I am having.

Any help would be greatly appreciated. Thank you.




General
I built a computer over a year ago because my little laptop from college wasn't good enough to do the things I wanted to do, which, at the time, was World of Warcraft. I also used Photoshop, etc... but, in any case, I knew I needed something more powerful.

Despite how long I've been around computers, I'd never spent much time with the hardware, so I had the help of a friend to build it. This awesome machine though was a hodepodge of parts that gave power for cheap and it's done most of what I needed it to.

I still play World of Warcraft to some extent. I picked up Starcraft 2 as well, but I don't play either as extensively as I used to. I still use Photoshop, and I've picked up video editing a bit with Premiere Elements.

That editing of video is one of the things that has led me to want a new computer. I realized that while my computer has done well, that I really want to build something that's a bit more secure and stable, capable of giving me the power I need while standing the test of time. My computer has given me some issues, and I know many of them may be software, but I'm thinking part of it is hardware too.

The process of building a new computer will probably take a little bit though since I'm only able to put a little bit of cash in that direction at a time. But I'm going to try and use this thread as a way to look for the parts with the best synergy so that I can build and awesome machine that I'm confident won't have any conflicts between pieces of hardware and will run with the power I'm looking for.

What I'll Be Doing
Gaming (Light)
I still play World of Warcraft and Starcraft 2 casually and would like to be able to experience them at full settings. But I'm not a big gamer and I don't need a big gamer rig. While I'd like to think that I have a computer capable of playing intense games, it's not a necessity and I can sacrifice some of that power for other, more important directions.
Video Processing
One of the biggest reasons for this upgrade is so that I can go through my explorations in Video more. I have Adobe Premiere Elements and I might pick up Premiere Pro as well as After Effects. I'd like a computer that doesn't take 2.5-3 hours to render a 10 minute video. So I need power in the right places to speed up my rendering times as much as possible.
Sound Support
I've gone through 2 E-MU 0404 USB interfaces and both of them have seem to broken with the same problem. Only, this second time, it's not covered under warranty. I'm upset because the product was otherwise decent, and somewhat expensive to go with the expensive condenser microphone I purchased. I haven't used it much because I don't have the proper soundproofing equipment, but I'd like to have an internal soundcard which supports my ability to record from the microphone and also my guitar, etc... so I'm willing to invest in a card which offers me the potential for some great recording options.
Multi-Monitor Support
Right now I only have one monitor, but I'd like to have a computer which can support at least two monitors. Possibly more than two.
Satellite Computer
If you've been following my posts, you'll notice my post in networking about trying to set-up my laptop to be a sort of "satellite" for my computer, having access to its files and functions even when I'm not near it. I figure having them on the same operating system will help immensely, but, if there's any hardware which might also help, I'm all ears. It should be noted that after this new computer is built that I plan on getting a newer, more powerful laptop as well. So if there's a part that needs to be in both of them, it'll be worth mentioning and I'll try to get a laptop that has that part (building a laptop is a bit much, I'll probably order a custom one though).
Budget
Obviously I don't want to spend a lot of money, but, at the same time, I'm not trying to fit under the same budget restrictions as before. The cheaper it is, the faster I can get it done though, which is important to keep in mind. I'd like to maximize the synergy and use reliable, powerful parts. So, there's an odd balance to keep there, but, mostly, if I feel an individual part that's recommended is too expensive, I'll cry foul. However, try to keep in mind that I'm not a rich person when making your suggestions. I have received a new job which enhanced my income quite a bit, but I do have bills to pay and moves in my life to make. I'm not the sort of person that likes a lot of toys though. I'm not getting a huge entertainment system, or a big screen TV, or any of those things, so I feel like I can still manage to splurge on a nice computer setup and still have money to save, to pay down debt and wok on getting this computer thing going.

Parts
Here is where I'll list on parts decided on. I honestly don't know where to start though. I've built a computer before, but only once, and with the help of a friend. So I'm not going to pretend I'm an expert on this, but the final say is definitely mind. But, with that said, I'm trying to be open and to doing what is suggested here. If I'm missing something from my list, let me know:

Tower:
Mobo:
Processor: Intel Core i7-2600 Sandy Bridge 3.4GHz (3.8GHz Turbo Boost) LGA 1155 95W Quad-Core Desktop Processor Intel HD Graphics 2000 ?
Sound Card:
Graphics Card:
Memory:
HDD Setup:
Power Supply:
Bluray Drive:
Misc:




I will cross post your original message for you and hope someone that
knows a little more about networking a printer can help you. My
printers are all networked by the method I described and I have never
had a problem with them, so this is outside of my experiences.

Here is the history of this post for other newsgroups just joining (and
sorry if it shows up difficult to read):

Then I turned Windows Firewall Off. Still can't access.
Earl

"Earl Partridge" wrote in message
ink.net...

I just checked Windows Firewall on Machine B and it is ON, but the
exceptions does show File & Printer sharing.
Earl

"Earl Partridge" wrote in message
news




This post is very long. Please read only if you are patient enough to help a
newbie. These questions mostly pertain to XP networking, and this seems the
best forum for networking. Referrals and suggestions are very welcome. Even
if you can answer just one or two of my many questions here, that will help
a lot. Just quote the text you are replying to so I know which question you
are answering. I get confused rather easily.

Before beginning the networking questions, in Belarc Advisor under
"Installed Microsoft Hotfixes," SP2 (KB811113) does not have a green
checkmark next to it (lacks the data to allow verification). Is that normal?
All updates after SP2 show up as SP3, and all of them do have green
checkmarks and are verified. Here is a synopsis.

BELARC ADVISOR 6.1f
---------------------------
Unmarked hotfixes lack the data to allow verification.
(C) marks a hotfix that verifies correctly.
(X) marks a hotfix that fails verification (failing hotfixes need to be
reinstalled)

Installed Microsoft Hotfixes
----------------------------
..NETFramework
1.1
S867460 on 3/8/2005 (details...)
M886903 on 3/8/2005 (details...)
DataAccess
Q832483 on 3/6/2005 (details...)
KB870669 (details...)
Internet Explorer 6
SP1
(C) KB867282-IE6SP1-20050127.163319 on 3/6/2005 (details...)
Internet Explorer
SP2 (SP2)
Outlook Express 6
SP1
(C) KB887797-OE6SP1-20041112.131144 on 3/6/2005 (details...)
Windows Media Player
(C) WM817787 (details...)
(C) Q828026 (details...)
Windows Media Player (continued)
SP0
(C) Q828026 on 3/6/2005 (details...)
Windows XP
SP2
KB811113[SP] on 3/8/2005 (details...)
SP3
(C) KB867282 on 3/8/2005 (details...)
(C) KB873333 on 3/8/2005 (details...)
(C) KB873339 on 3/8/2005 (details...)
(C) KB885250 on 3/8/2005 (details...)
(C) KB885835 on 3/8/2005 (details...)
(C) KB885836 on 3/8/2005 (details...)
(C) KB886185 on 3/8/2005 (details...)
(C) KB887472 on 3/8/2005 (details...)
(C) KB887742 on 3/8/2005 (details...)
(C) KB887797 on 3/12/2005 (details...)
(C) KB888113 on 3/8/2005 (details...)
(C) KB888240 on 3/13/2005 (details...)
(C) KB888302 on 3/8/2005 (details...)
(C) KB890047 on 3/8/2005 (details...)
(C) KB890175 on 3/8/2005 (details...)
(C) KB891781 on 3/8/2005 (details...)

In another area of Belarc, Local System accounts show "HelpAssistant" and
"SUPPORT_388945a0" as disabled accounts. Is that because I disabled Remote
Assistance and Remote Desktop in Control Panel - System - Remote? Could it
also be because I disabled Messenger from starting up with Windows?

Is this a good place to get help with what I need, or is there an online
forum for newbies you might recommend, because this could take a while. I
basically need instructions that an idiot could understand.

I will also need help determining which of the numerous Services that start
up in WinXP I need and which I do not. The MSCONFIG in XP sucks. I can't
maximize it, and there is hardly any information in either MSCONFIG or the
Task Manager under Services. Program names and paths are not mentioned, just
names of processes. How do they expect me to find anything? I need a good
third-party Startup Manager/Task Manager in one program that is not very
expensive. WinTasks Pro is too expensive. One option is the Ultimate
Troubleshooter, which is $25. I haven't it tried yet, but I am open to other
options. Their site has a list of Processes (Services). SysInfo has a list
of Startups. Spybot helps me to some extent with Startups but not Processes
or Services.

Startups
http://sysinfo.org/startuplist.php

Processes
http://www.liutilities.com/products/...rocesslibrary/
http://www.answersthatwork.com/Taskl...s/tasklist.htm

Some of those XP background processes might be what is causing my LAN to cut
out from time to time. When that happens I lose both Internet access and
network access. One of the network icons disappears from my taskbar. Other
times it doesn't, and when I click on it to "repair" it it freezes. When I
try to bring up "Network Connections" it freezes. A reboot brings everything
back to normal. Firewall, antivirus and antispyware are all up-to-date, full
system malware scans are run regularly, including online scans. I really
don't think malware is the problem. I think it's background processes in XP,
but I just don't know enough about them to mess with any of them. XP has
only been installed for a few days on both PCs. Both of us are new to it.

Please assistant with Network Setup and with Binding/Unbinding TCP/IP from
File and Printer Sharing for better security. I am the "network
administrator" of this home network but new to XP and not a techie or
certified expert. Many web sites and Microsoft articles about networking are
geared toward more advanced users, and I do not understand all that is in
them. Need step-by-step advice. Forgive me if too much information is below.
Better to have too much than not enough.

At present, only two XP Pro SP2 computers are connected, this one and one
other desktop. I do not know how to connect the Win95a and Win98se laptops
or if it is even possible since they use 16-bit PCMCIA to connect to the
ethernet hub. The XP network setup wizard does not support Win95. The old
laptops connected fine to the network when this computer and the other
desktop both used Windows Me.

With XP, it is all user-level rather than share-level access, and I don't
know how to configure Win9x for user-level access. Let's do that later after
we get things configured properly for the two XP machines. Also, I need to
password protect the shared folders, the access to each computer, and each
network printer. Can't see how to do that with XP. With 9x, it was easy to
password-protect a shared printer or a shared drive.

SBC Yahoo! DSL Technical Support and 2Wire Technical Support state that the
2Wire Home Portal 1000HW is both a DSL Modem and a Router. I do not know if
it is a gateway, but I suspect it is for three reasons: (1) Windows uses the
word "gateway" in the name for the connection, (2) Windows preselects the
"residential gateway" option in the network setup wizard, and (3) the 2wire
people say that I cannot connect a separate "residential gateway" to the
device.

NETWORK CONFIGURATION
------------------------
10BaseT Ethernet Network
One Workgroup, No Domain
4 Computers (only 3 can connect at a time)
This computer is the Network Administrator
This computer is XP Pro SP2 (3 local users)
DSL modem/router uses DNS/DHCP/NAT (functions as a gateway?)
DSL modem/router has a hardware firewall
DSL modem/router is wired to this PC by USB 2.0 (10Mbps)
DSL modem/router is wired to a 10BaseT 4-port ethernet hub (10Mbps)
Other computers connect to this PC and the Internet by ethernet hub
This computer has no cable directly to the hub (or there would be conflicts)
PCs CONNECTED: (1) XP Pro SP2 PC (same 3 local users)
PCs DISCONNECTED: (1) Win95a PC and (1) Win98se PC
FILE & PRINTER SHARING: Enabled
INTERNET cONNECTION SHARING: Disabled (incompatible with DHCP modem/router)
WINDOWS FIREWALL: Off (because ZoneAlarm firewall is On)
THIRD-PARTY FIREWALL: On (Zone Alarm Pro 5.5)
IP ADDRESSES: Obtained automatically by DHCP
BINDINGS: Default settings (insecure)

** Is my current network peer-to-peer or client/server? **

TRANSPORT PROTOCOL LAYER
---------------------------
Internet Protocol (TCP/IP)..............Properties available
Aegis Protocol (IEEE 802.1x) v2.3.1.9...Properties grayed out
NWLink IPX/SPX/NetBIOS Compatible Transport Protocol...Properties available
NWLink NetBIOS..........................Properties grayed out

All protocols were automatically installed and configured by Windows except
for IPX/SPX, which I added after reading that that protocol (or NetBEUI) is
the key to separating File and Printer Sharing from TCP/IP. I just don't
know how to do it. On the options for each network connection in XP, I see
nothing about bindings. In Win9x, the bindings options are easier to find.

HARDWARE ADAPTER LAYER
-------------------------
1394 Net Adapter
2Wire Gateway USB
MAC Bridge Miniport (Network Bridge)
Realtek RTL8139/810x Family Fast Ethernet NIC (Disabled)
HSP56 Micromodem (COM3) (56k Dial-up Fax Modem)

- Realtek is disabled, nothing is plugged into my ethernet port. A Z65n
network printer will go there later to replace my existing Z42 parallel port
printer. We don't have a cartridge for the Z65n. That's the only reason
we're not using it.

- The Network Bridge connects 1394 and Realtek, so that the new Z65n
printer, once installed, will be available to the existing network.

- The 1394 Net Adapter is used with my network and/or the Internet, but I am
not exactly how or what it does. Windows automatically configured it. The
1394 sounds like firewire, but I don't have any firewire devices installed.
Firewire is enabled on the mainboard, but I'm not using it. Or am I using it
through this adapter? Is this just an internal connection needed for Windows
to set up the Internet and the network? Windows needs at least two adapters
for that, according to the XP Help and Support.

** Which adapter is the one that connects to the Internet, 1394 or 2Wire? **

** Which adapter should be used for File & Printer Sharing? **

NETWORK SERVICES LAYER
-------------------------
Client for Microsoft Networks.....Properties available
File and Printer Sharing for Microsoft Networks...Properties grayed out
QoS Packet Scheduler..............Properties grayed out

NETWORK CONNECTIONS
----------------------
Network Bridge................Connected, 400Mbps
LAN (Realtek Ethernet)........Disabled, Bridged (nothing plugged in there
yet)
LAN (2Wire Gateway USB) DSL...Connected, 10Mbps
Dial-up Connection............Disabled (backup connection method)
1394 Connection...............Connected, 400Mbps, Bridged

- The Realtek Ethernet NIC is disabled at my choice because nothing is
plugged into that port. Since I'm already connected to the network via USB
(or 1394), I cannot also be connected to the hub or there would be
conflicts.

- I plan to connect an ethernet cable to my open ethernet port at some
point. The cable will go from my ethernet port directly to the ethernet port
of a Lexmark Z65n printer (when we get a print cartridge for it) without
going through the ethernet hub.

- When I re-enable that Realtek ethernet port for the Z65n printer, that
printer will automatically become part of the existing network through the
Network Bridge, theoretically.

- The dial-up connection is only used when the LAN is not available.

- When dialing in with the dial-up connection, TCP/IP completes the
connection successfully, but a connection to the remote computer cannot be
established with IPX/SPX (error 733). A dialog box asks me if I want to
"Accept" the connection as is and if I want to check the box "Do not
request the failed protocols next time". I click "Accept", but I'm afraid to
check the other box about failed protocols because I don't know how
difficult it will be to reverse that decision if things change.

- I wonder why the 2Wire Gateway USB connection is only 10Mbps (rather than
400Mbps) for USB 2.0, unless it's because the router connects to an ethernet
hub which can only support 10Mbps.

NETWORK SETUP WIZARD
-----------------------
Option #1: "This computer connects directly to the Internet. The other
computers on the network connect through this computer."
(This is the option I thought was correct, but Windows did not preselect
it.)

Option #2: "This computer connects to the Internet through a residential
gateway or through another computer on the network"
(This option came up by default in the network setup wizard when Windows
searched for a shared connection. Maybe this one is correct. This is the
option I am presently using on this computer.)

Option #3: "Other"
(This option is not used, but it was set up this way originally. At that
time, there was no USB cable between the router and my computer. My computer
was connected directly to the ethernet hub. Then we heard that the USB
direct connection method would be more secure, so we switched the wiring to
the current configuration as recommended by the 2Wire people and my ISP.)

QUESTIONS
------------
1. Which option for the network setup wizard (see 1, 2 or 3 above) is
correct for this computer?
2. Would option 2 be correct for all the other computers on the network?
That was used for the other XP machine.
3. Since the modem/router connects to my machine with USB, there is no power
to that USB connection when my computer is turned off, right?
4. So the other computers can't connect when my machine is turned off,
right?
5. Does my machine need to be turned on all the time in order for the others
to connect to the Internet?
6. Is my current network peer-to-peer or client/server?
7. Which adapter is the one that connects to the Internet, 1394 or 2Wire?
8. Which adapter should be used for File & Printer Sharing, 1394 or 2Wire?
9. Network Bindings need to be reconfigured to isolate File & Printer
Sharing from the Internet without losing my ability to connect either to the
Internet or to the other computers (and the other computers to me). I need
step-by-step instructions, not too technical.
10. Password protection needs to be added to each network printer and each
shared drive/folder. I need step-by-step instructions, not too technical.
11. The network access and Internet connection through are sometimes lost
for no apparent reason. Any idea why? Sometimes the 2Wire Gateway USB icon
disappears from the taskbar when this happens. When it doesn't disappear, I
can't right-click on it because it freezes. Sometimes Start -- Network
Connections will not open. I suspect it may be some background process
running in XP. The only way to get the connection back is to reboot the PC.
12. Remote Desktop and Remote assistance are both disabled. Do they need to
be enabled?

After the two XP machines are configured, I will need assistance setting up
the two Win9x laptops. Looking forward to hearing from the experts.




I know that the connection to the Internet and how one uses it can be different, post 604,688. In this case there is nothing odd or complicated involved; one ADSL modem and one PC. No network, no routers etc.

Before I turn off this PC I disable the Internet connection, either via right-click on the connection in Network Connections or via the icon in the tray (Notification Area, whatever), then shut down Windows and maybe turn off the modem. When I turn on the PC, the connection is disabled, so I start the modem and some minute later enable the connection.

This is how I have done the last year and it has worked perfectly. Some month ago I rebuilt the machine, new hardware, and in this case integrated NIC on the M/B.

Two weeks ago when I disabled the Internet connection, the PC froze. When I rebooted I found a discrepancy; it was disabled in Network Connections but not in the Device Manager. When I tried to disable the NIC in DM the machine froze again. After I rebooted the PC I found it enabled in both Network Connections and DM. OK, so I tried again to disable it in Network Connections, and the PC froze.

OK, maybe the drivers are corrupt or something. Reboot to Safe Mode, uninstalled the NIC drivers via CP Add or Remove Programs, reboot to Normal Mode, installed the drivers for the NIC. Then it worked until yesterday. When I disabled the connection, the PC froze.

Now if I disable the connection it hangs again.

When I built this machine some month ago, I checked which device drivers I had and what versions. I found that I, in the most cases, had the latest versions (downloaded newer for graphic and IDE/SATA).

The only driver that Windows complained about (as it does with standard settings) was the NIC driver since it was not signed. I don't know if this is related, but I guess someone would say always use WHQL tested and signed drivers. I do if I can, but it is sometimes hard to track down drivers.

Any thoughts are appreciated.

Spec.
Asus M2V (Socket AM2)
Integrated LAN controller: Attansic L1 Gigabit Ethernet 10/100/1000
Driver: Attansic 0.3.3790.105
There is some version 0.3.3790.106 on the ASUS site, but the Release notes on my M/B CD says:
--------------------
v0.3.3790.106(A0025)
setup.exe
(1)fixed install from CD-ROM issue
--------------------
so the driver version is 105, and the correction is related to the setup.




BLOCK PORN ON A WIRELESS HOME NETWORK

BACKGROUND
I plan a home wireless network, N-class, and know visiting teenagers will be tempted
on rare occasion to go places on the internet they should not. So, I need a way to
prevent internet travel to porn palaces and other sites associated with malware.

METHOD
Generally, I am familiar with wireless setup, and plan WPA2 security, and to stop SSID
broadcast. Maybe even to restrict home network access to registered MAC addresses.
But this is only general security, and blocking porn sites is still another issue.

BLOCKING PORN SITES
To stop porn access absolutely, I have a choice of a resident local control for each
computer, like NetNanny (https://www.netnanny.com/alt_rotate) or CyberSitter
(http://www.cybersitter.com/). The problem is these programs are fairly obvious, and
a blocked search on Google will present a screen that indicates there is a blocking
system in-place. An alert teen will attempt to boot past them with a Linux boot CD, or
equivalent. Depending on the program, security is not all that solid against determined
teens.

Aside from NetNanny or CyberSitter, I also can use something like Open DNS, a
business website and gateway system which allows the wireless router, itself (if the
feature is provided), to use the ODNS IP as its gateway to the internet-- completely
bypassing the regular ISP. (www.openDNS.com)

While most ISPs have no problem with this arrangement, ODNS is still something
like a committee system of actually voting on which sites are bad / trouble / risky,
and this leaves the coverage less than comprehensive, and often crude and very
granular.

For example, a recent ODNS forum post mentioned a school had blocked the
hypothetical porn site www.sexgals.com at one level, but students still contrived to
reach the porn website through another level-- the difference was a matter of one
webpage which was still accessible.

So, it appears ODNS-- a brilliant approach, from the standpoint of hardware control
and even the knotty political / social issue of classifying certain websites "bad"--
seems ineffectual as a really air-tight barrier against the galaxy of malware and porn
sites.

IN OTHER WORDS
Does anyone have suggestions for a really secure system that can screen out porn
and other bad sites, yet not have to reside on the client computer on the network?

I had considered putting NetNanny or CyberSitter on a single computer to be used
on the home network as a gateway system for all the others-- all network client
machines would attach to a router subnet running out of the gateway computer. But
that is a scenario from a wired, not wireless network.

Wireless network protection and control is still a problem. Unfortunately, most
wireless routers have no provision for a resident NetNanny or CyberSitter level of
control-- it's a few blacklisted sites, or a few whitelisted sites, or nothing. So, I am
down to using two routers-- the first a modem/router which delivers my ISP services
(on which I would turn off wireless) and a second wireless router which gets and
distributes its data from the gateway machine on which I have installed NetNanny or
CyberSitter.

At least this would bypass the issue of installing NetNanny or CyberSitter on each
computer on the home network..Unlike using Open DNS, the NN or CS setup would
still present a screen whenever a Google, Yahoo or Bing search is blocked.




I don't think this belongs in the Networking board, so I'll put it here since it involves a download of "software," in a manner of speaking. The current issue of Fred Langa's newsletter contains a link to Nick Christou's web site and a short story about creating a network-aware boot disk. I must warn you that the site may be swamped, 'cause I'm downloading as I write and the download (DSL) is running verrry slooowly. I have not yet tried Nick's "product" but I will as soon as I can. This is a topic near and dear to my heart!

Since I've been using PowerQuest's Drive Image for many years and it is a "DOS" functioning program, several years ago I wanted to be able to create a boot diskette that would "see" my small, in-home network so I could create my hard drive images to a "backup" machine on my net. Man, you can't believe how LITTLE help I was able to get on that subject around the internet. Finally, after getting tiny bits of this and that from Microsoft, PowerQuest and a few other sources, I was able to put together a boot disk, albeit NIC specific, that does the job. I've guarded that disk with a passion and have, I'm afraid to say, run in to a few NICs with which it doesn't work. Here's what it says on Nick Christou's site: (I'm taking out some linefeeds so this post won't be too long) ::features: Windows 9x, NT, 2000 and XP workgroup and domain support! Fully configurable - or let the disk configure itself! PING and IPCONFIG compatible utilities included! Interactive SETUP program! Random computername and AutoLogon! FAST boot time, and options to boot without network support! FAST full duplex network capabilities (where hardware permits)! Use profiles for different configurations! Multinational keyboard capabilities! Built in PCMCIA support for ALL laptops! Configure hardware for your network card, or Autodetect! Safe Mode for drivers that refuse to load properly! HOSTS and LMHOSTS support! Advanced memory handling, and virtual drive technology! Auto Logon facility.
Ability to run a predefined set of batch commands after login!What has always surprised me is how little interest I could find in this topic, so I thought maybe I was the only dummy in the computing world and everyone else already knew how to do this. Oh well, FWIW..... (P. S. The site MUST be swamped. The download is only two-thirds finished. You might want to wait till tomorrow to try Nick's site. Mebbe his bandwidth is being crushed!)




Hi, All,

I've had a small wired/wireless network setup in our office for many years. I now need to connect the computers on that network with some new computers that are literally "across the street" in another building, less than 150 feet away. I'd love to make it a cabled connection but that is proving to be very impractical, so now I'm settling on a wireless connection.

I'm somewhat familiar with access point and bridge hardware, although I'm not entirely sure when one is needed/required over the other. I can easily get a run of ethernet from our current router to whatever device I might need. I would like to find devices that will not suffer any significant signal degradation over the proposed span between buildings. Oddly, most of the off-the-shelf access points all seem to have this problem, perhaps because of a significant amount of metal and concrete in the exterior walls of both buildings. Likewise, the signal is very different from one corner of the new building to another.

I'd like to know if anyone here has a recommendation for any type of hardware that would facilitate getting a much stronger signal at the "remote" building, and what would be needed/desired there to complete the connection. I've seen all sorts of things advertised from $50 to $5000 but don't really have a feel for what is truly necessary.

Any help would be really appreciated.




If you’re an owner of the LG Quantum/c900, you may have noticed that your carrier hasn’t enabled Internet Sharing on the device. This is a universal problem for all carriers with the exception of Telstra (Australia).

Internet sharing is a feature that Microsoft made available in Mango, to carriers but not consumers. The drivers are available to manufacturers, who can choose whether or not to include them in their Mango drivers and can also be removed by carriers before pushing them out to the public.
Now let’s go back to that bit about Telstra… It is true that this carrier selected to include the tethering drivers in their mango driver package. There was much speculation about changing registry values to get the update on a different carrier, but this would not work because of the model variations - the Telstra Quantum is labelled c900k, with the Bell variation being c900b, while AT&T and other international models are simply c900). There are actually no hardware differences between the two, so I’m unsure why they’re labelled differently.

Now, in order to get tethering on any Quantum, we need to flash the Telstra ROM. If you’re uncomfortable with flashing ROM’s, or have never done it before (it’s easy, trust me!), you may want to stop here, although I have included easy instructions for newbies. Please note that flashing a ROM will delete/erase all content on your phone. You can reinstall apps more easily by viewing your purchase history in the Zune software! Alternatively, you can read how to enable wired tethering (which doesn’t require flashing) at the bottom of this post.

**Note that this will break MMS! The only solution (at this time) is to carrier unlock your phone and run the LG Network Setup tool, available from the marketplace!**

First of all, you’ll need to download the package (which weighs in at 372 MB) after the break, which has:
A modified DLL that allows cross-model flashing.The LG flashing/engineering tool.The LG United Mobile driver.The Telstra Mango ROM

Download this file (Deposit Files) and extract the contents to wherever you want.

Start your phone in “Emergency Download” mode; you can do this by holding the camera and volume down button while pressing the power button. A screen with an exclamation mark should appear, with the text “EmergencyDownload”.On your PC, open the “LGDP2 V36 Flashing Tool” folder, followed by the “Setup” subfolder.Launch the included executable and proceed through the installation process. When asked for the serial key, copy and paste it from “Serial Number.txt”. Finish the setup. You may get an error related to mqmailoa.dll, disregard it.Copy the “DOWNLOAD” folder from the flashing tool folder and paste it in C:, overwriting any file conflicts.Install the LG Modem Driver found in “LG Modem Driver (MA 4.9.7) in your extracted directory.Connect your phone to the computer via USB and allow the drivers to install.Disconnect your phone now.Navigate to C:DOWNLOAD and launch “LGDP2_V36_UMTS.exe”The tool will launch with a pop-up asking for Model Division, select “UMTS” and press OK.You will be presented with another pop-up, asking for Port Selection. In “Easy Select” on the left hand side, select “All”. Under “DLL Selection”, point the program to the DLL located in the directory you originally extracted everything to, under subfolder “DLL”Under “Download Configuration”, point the program to the Telstra Mango ROM, which is also in the extracted directory, under ROM. Press OK. Ignore warnings about being “Unable to Find Monitor Port”.Press “START” in the upper right hand corner. DO NOT CONNECT YOUR PHONE YET!NOW reconnect your phone. The process will begin, allowing you to view detailed information related to the progress in whatever COM port window the phone is connected to. Be patient as the process may take some time. DO NOT DISCONNECT YOUR PHONE!When the progress reaches 100%, you may disconnect. Now quickly run through the setup of your phone. At this point in time, you can close the LG Flashing Tool.You’ve now officially flashed the ROM.There are still a few steps to get tethering! Currently, you are running Mango only. The latest LG/Telstra drivers haven’t been installed yet.Navigate to settings on your phone and verify “Date and Time” are set to the correct values, and set “Region and Language Options” to the appropriate values for where you reside and tap “Accept Changes and Restart Phone” at the top.Reconnect your phone to your computer and launch Zune. If required, go through a quick name setup and then allow the phone to check for updates. The update “LG Update for Windows Phone” will be installed. After this, restart your device and voila! You can now enable Internet Sharing from the Settings menu! Telstra has also released the 8107 update, so you don't have to use the CAB sender method to get the keyboard fix.

If you want to remove the Telstra boot screen (or even replace it with your own), you can root unlock your device using WP7 Root Tools 0.9 (requires interop unlock first: see here (follow the LG method, obviously) http://forum.xda-developers.com/show....php?t=1271963, and then use this tool http://windowsphonehacker.com/articl...weaks-04-09-12

If you’re uncomfortable with ROM flashing, or don’t want to have to re-sync your content/apps, there is a less efficient but easier to apply method of tethering via USB. This hack is applied via the LG MFG app on the phone, but requires a reboot every time you apply it.

To do this, follow these instructions:
Install the LG Pilot Modem Driver from here! (Deposit Files).Open the dialpad on your phone and dial “##634#”. The MFG app will install and open.You’ll be presented with a password field. The password is “appmfg#*#”.Open the “Engineer Menu” and then “Port Setting” followed by “USB Switching”.Take note that the default value here is MS COMPOSITE” - if you don’t change this back later, you’ll be unable to sync your phone via USB with Zune.Select “QC COMPOSITE” and press OK to reboot.Connect your phone to your PC, the drivers will be automatically installed.Open Device Manager, and find “LGE CDMA USB Modem” and open the Properties dialog. Under the advanced tab, add the additional string “AT+CGDCONT=1 “IP” “your carriers APN” (isp.cingular for AT&T, “pda.bell.ca” for Bell Canada, etc). Apply the setting.Create a new connection, by opening start and typing “dial-up”, click “Setup a Dial-up Connection”Select the “LGE USB Modem” as the source, and set the phone number as either *99***1# (America/International[?]) or *99# (Canada).Turn off the Data connection on your phone prior to dialing!Connect! There’s no username/password.The next time you want to sync via USB, you need to change back to MS COMPOSITE in MFG.




Hi Searched all around...none of the solutions offered fixes my problem. Hope you can help.

After entering the 8 digit code on my Windows 7 Ultimate PC in the extender setup, I get the "Configuration Error" "An error was encountered while configuring your computer for use with this Extender.".

Happens every time the same way. Each failed attempted causes two event log entries below. Interestingly, immediately after the failed attempt - the "Media Center Extender Service" service gets disabled. It is running under the "Local Service" account. I can set it to "automatic start", and then re-start the service, but as soon as I go through the Extender Setup, and it fails, the service is disabled again, with the two event log entries..

I do not have any Media center certificates located under "Certificates (Local Computer)Personal".

Other relevant info:.

Windows 7 Ultimate 64 bit.
New Xbox 360 Elite (never have had an xbox connected).

Windows firewall disabled on my PC.

I have a Sonic Wall router/hardware firewall. I believe the XBox and the PC see each other..

XBox can "see" the computers on my network (my media center PC and other PC's are listed in XBox when searching network.). When I do the network connectivity test on the XBox, it passes the test to my PC..

Xbox is connected to internet - able to log on to XBox live, and stream from Netflix etc..

In media center on my PC, the Xbox is listed in the Externder section. Shows "Not set up", and shows the setup key, with 3 (same 3) of the 8 digits listed from the Xbox listing.

IP address listed on Xbox settings is the same subnet and gateway as my PC.

However, I cannot ping the Xbox IP address from the PC...times out..

Event Log Errors:.
Event ID: 534.
Media Center Extender Setup failed to configure Terminal Services for Extender..
Error: Access is denied..

Event ID: 533.
Media Center Extender Setup failed to create or retrieve the Windows Media Center Extender PC certificate..
Error: Access is denied..

What can I do to resolve the access denied problems?.

Update:

Logged in to Windows with an account that is an administrator account when trying to configure extender.

Running WMC as administrator

Xbox is connected to the network via network cable (not wireless).

I have disabled the policy setting "Always prompt for password upon connection" in the Computer ConfigurationAdministrative TemplatesWindows ComponentsRemote Desktop ServiceRemoteDesktop Session hostSecurity hive.




Hello everyone. This is my first post and I just wanted to say hello and thank everyone in advance for their help.

Getting down to the problem. I have been using Windows 7 beta since the public launch from build 7000 to my current 7077 x64 with no problems what so ever. About 2 weeks ago (while running build 7077) my motherboard decided to crap out on me and I had to send it in to Intel for replacement. I received my new MB and installed all my hardware, did a complete format of my HDD and installed a fresh copy of build 7077 x64.

Through the setup process, I chose the Home Network option as I have always done in the past. However I can across two problems.

Problem 1. Windows is saying that my copy is not genuine, however, I am using the key provided to me by MS! So I try to validate online, which brings me to my second problem.

Problem 2. I am unable to connect to the internet! I have tried everything I can possibly think of! The Network and Sharing center lists my network as a public network. I try to change it, but it doesnt allow me to! I have tried to troubleshoot the device and connection, I do get an error which says: The network adapter doesn't have a valid ip configuration, or, no errors could be found! I am trying to connect via ethernet cable, I have also tried using this cable to connect to the internet via my other comp using build 7077 x64 and it connects fine.

Now to the hardware I am using:

My motherboard is an Intel DX48BT2 board with an Intel 82566SC-2 Gigabit network adapter. My cable modem is connected to my ZyXel x550 and I have the ethernet cable running to my comp. The wireless router is used for my other computers throughout the house. The computer I am typing on is connected via wireless connection and is running build 7077 x64 as well. This computer shows its network as Home.

I hope I have provided adequate information to paint a clear picture, please let me know if any additional information is required. Thank you all in advance for any help you can provide.

MrF430




The installation on a SATA hard disk [ Seagate SATA 11 500GB HDD :ST3500410 SATA] with Windows VISTA X32 on partition 1 (200GB) after paritioning the free space was very easy ( similar to VISTA and better than XP) and rather fast in my System built on a PCChips P55G Motherboard , Intel Dual Core CPU E2160 1.80 GHz and 4 GB ( 2x2) DDR2 667[PC2 5300] G.Skill heat-spreader RAM, Encore 802.11g Wireless PCI adapter ENLWI-G2 and Hybrid wired -wireless Buffalo AirStation model WHR-G 125 router. I anticipated problem with my Wireless PCI adapter and therefore did not accept the prompt to start my Wireless Network setup for automatic mode offered during the install and waited till the setup was succesfully accomplished at much faster rate than WinXP and probably equal to or better than VISTA x32. Although the setup had automatically installed all the drivers for the integrated devices like video, audio, LAN and IDE and sata controllers on my PCChips P55G motherboard, and even the Encore wireles adapter with its Realtek 8185 Extensible 802.1b/g Wireless Device driver , the Smb had a yellow flag. To my pleasant surprise the system was happy to load the x64 VISTA driver from PChips' Version N-5.00 Motherboard software CD by just dropping it into the optical drive and pointing the device manager to the drtive letter. It took probably less than 20 seconds for "Successful driver installation" and the disappearance of the yellow exclammation point from the Device Manager. The Wireless adapter although showed no problem in the DM ["device is working properly" in its Properties] and my Homenetwork name was seen as "connencted" in the wireless Configuration , [ Open Network and Sharing Center], Internet connection failed was the message and IE would not open any webpages when launched and IPCONFIG >>>>no IP address either. I attempted to update the driver using the ENCORE software CD I had although it had only VISTA x64 driver. To my pleasant surprise that too was easily accepted and installed by Windows 7 and suddenly there was spontaneous activity on the Taskbar ["system Tray] Open Network and Sharing Center icon showing My Network -"Internet access". Very soon the computers in my home network took their proper places along with this new Windows 7 system [ like the My Network Places in XP under Workgroup]. I had previously changed the Workgroup name of the new system to that of the existing one. IE 7 was launched and sudenly the "Send feed back " icon appeared on my desktop. I am very very pleased so far. I could easily connect to my EPSON Stylus Photo R 380 Photo Printer attached to a WinXP x64 PC without any problem . It used the VISTA X64 drv and its icon was promptly on my system tray. I am going to try and "stress" the system with additional hardware and software install to see what works and what does not and be happy to post my experience here for the benefit of others.

Microsoft LifeCam VX 3000 WebCam failed to install properly using the Vista x64 driver and also a driver the Windows 7 troubleshooter prompted me to download and install from MS. The Camera seems to install with the message "USB device installed and ready to use" appearing in the system tray ("notification area") but when the LiveCam icon is clicked I get the message "Camera is not connected" . After several repeated uninstall /reinstall routine I called it quits. I had no problem installing a logitech USB headset.

I had no problem installing the following applications:
7Zip 64 bits, Antivir (free) Personal Antivirus, CCleaner, Auslogic Defrag, Paint Dot Net, ImgBurn, Windows Live Messenger ver 2009, Yahoo Messenger 9.0.0.2136, Adobe Reader 9. skype 4.0.




I have been battling this network printer issue since 7000 became available. This may work with other brands of printers as well.

I am currently running 7022. I have an HP LaserJet 1018 connected locally via USB. Printing locally worked fine. The problem was trying to get remote machines printing to it over the network. After many attempts, trial and error, this is what finally worked.

I have two workstations running Windows 7022. Both were configured as "Work" networks, both in "Workgroup" workgroup. The important thing here is to disconnect your printers before you begin the Windows 7 installation. Once complete, Install the printer using your original printer installation CD that came with the printer. In my case it was the HP installation disk. Run this as adminstrator in Vista Compatability mode.

HP's installation requires you to leave the printer unplugged until it asks to plug it in. This was a bit buggy for me as I plugged in the printer (USB) when it asked but it just sat there scanning for new device. I clicked cancel and the drivers actually installed at this point continuing with the installation, odd. Once complete, I printed a test page OK

Next I disabled Windows Firewall (Private) completely. Ya I know but it was the only way I could get printing to work over the network. I would guess an exception can be made but not real good with windows firewall exceptions

Next I enabled the following: Network Discovery and File and Print Sharing under private network. (These options are located under Network and Sharing then in the left pane click "Change advanced sharing settings)
Next I created a folder called c:new folder and then shared this giving full control to "Everyone"
Next I shared the printer making sure "Everyone" had "Print" access. (permissions button)

Reboot Workstation

Once I rebooted I checked the event logs and received this error:
"The print spooler failed to share printer HP Laserjet 1018 series with shared resource name HP Deskjet F4100 series. Error 2114. The printer cannot be used by others on the network."
I have not found a solution for this error but was still able to print. Read on.

Moving to the remote Windows 7 workstation now, I made sure network discovery was enabled. I then doubled click network icon on the desktop (you can add this to your desktop by right clicking anywhere on your desktop and choosing "Personalize". Once opened, in the left pane click "change desktop icons" and then tick the Network box and click ok. It should now be on your desktop)

You should now see the primary Windows 7 workstation (printer workstation) listed. Double click to open it. You should now see your shares, the folder that you shared called new folder and then your printer. Right click on New Folder and select map a network drive. Tick both check boxes (Reconnect at logon" and "Connect using different credentials"), click finish. Now click " use another account" and enter username and password from primary workstation (printer workstation) that you normally login with.
Tick the "Remember my credentials" checkbox. click Ok. It should open and you should see the contents of this shared folder which is empty.

Now open Network (icon) again from your desktop and you see the New Folder and and Shared Printer again. Double click to open the Printer. It should now say connecting to printer, taking some time to install the printer driver from the other computer. At this point it should then open the print queue that is empty. Your printer is now added in your Hardware devices and set to default printer. Open your hardware devices right click on printer, choose printer properties and print test page. It should now print.

During all of my previous installs I left the printer connected during Windows 7 installation which windows found and installed. I suspect a driver issue with the windows driver for the hp printer. It is possible you can download the driver from the printers website but I did not have much luck with just the DRIVER download. I needed the setup wizard which asked me to plug in the printer at a certain point.

One other tip to try if you still have problems. On the remote workstation, click to add a new printer and make it local even though it is not connected. When asked which type of printer (list) select Have Disk and then point to the driver files from your installation cd (or if you downloaded them, make them available on the remote printer and point to this location) Finish the printer setup, then open Hardware Devices and delete the printer. Although you deleted the printer the drivers are still installed. Try the above steps again to print

Well, if you are having similar printing issues over your network, give this a try and hopefully it will work for you as well.

rb




In a race to optimize everything, developers often go to extremes to build software that performs routine tasks. MissionControl is a system that allows users to program a control center that stores interfaces with attached hardware sensors, allowing the users to control any other devices that can be activated via the underlying protocol. For demo purposes, the MissionControl build at this point is compatible with the Phidgets IR hybrid sensor.
The system has two core components:

A server application, which is a Win32 console application that handles incoming queries and returns data to the connected clients. This application runs on the desktop machine with the connected sensor.The Windows Phone application that sends requests to the target server and can trigger a variety of pre-programmed commands.
The Basics

Hardware and Communication Infrastructure

One of the most important parts of the project is the signal capture and replication hardware. For the purposes of this project, I decided to use a dual-mode Phidgets IR sensor. It supports both IR code capture and subsequent replication. From a user’s perspective, this device also eliminates a substantial code-learning overhead as well as the potential error rate. Instead of searching for a device-specific hexadecimal sequence that later has to be transformed in a working IR code, the user simply has to point his remote control at the sensor and press the button that he wants accessible from a mobile device. Given that the capturing software is running on the target machine, once the sensor detects that a code can be repeated within an acceptable precision range, it will be automatically captured and stored, with all required transformations worked out in the backend using the free Phidgets SDK.

Even though I can, I don’t have to handle the binary code content received through the sensor—the Phidgets .NET libraries carry built-in types that contain all the processed metadata that I will discuss later in this article.
This sensor is connected through a USB port to a machine that acts as a communication gateway. This server should have port 6169 open for inbound connections.
NOTE: The port number can be changed, but you have to keep it consistent between your server and client applications.
The communication between the phone and the computer running the client is performed via a TCP channel—sockets are used to perform the initial connections and serialized data transfer. You can see the generalized data flow between the devices that are involved in the procedure in the graphic below:

The server (desktop client) handles the local storage and release of all incoming IR codes. The mobile client has to know the location of the server—once specified and confirmed, it can send one of the pre-defined commands to it and either query the server for existing command groups (sets) or invoke one of the stored IR codes. When I pass data between devices, I use JSON for the serializable components. The data is also processed before being sent in order to speed-up the process—for example, on the server side the sets are serialized together with the associated codes. Like this:

[
{
"Name":"batman",
"IsList":false,
"Commands":[
{
"Name":"test command",
"Code":{
"Mask":{
"BitSize":12,
"CodeData":"AAA="
},
"BitSize":12,
"Encoding":2,
"CarrierFrequency":38000,
"DutyCycle":50,
"Gap":44761,
"Header":[
2374,
606
],
"CodeData":"DJA=",
"MinRepeat":5,
"One":[
1189,
606
],
"Repeat":null,
"Trail":0,
"Zero":[
582,
606
]
}
},
{
"Name":"turn off",
"Code":{
"Mask":{
"BitSize":12,
"CodeData":"AAA="
},
"BitSize":12,
"Encoding":2,
"CarrierFrequency":38000,
"DutyCycle":50,
"Gap":44770,
"Header":[
2360,
613
],
"CodeData":"DJA=",
"MinRepeat":5,
"One":[
1169,
613
],
"Repeat":null,
"Trail":0,
"Zero":[
585,
613
]
}
}
]
}
]

The inherent problem with the JSON data above is the fact that the phone client does not need the information related to the code binary sequence and all the metadata that goes with it. So it is effectively stripped down and reduced to the names of the sets (when a list of sets is requested) and commands (when a list of commands is requested).
The Data Model

As you saw from the description above, the server organizes individual infrared codes in sets. A single set is a bundle of codes that may or may not be related to each other—ultimately, this is the user’s decision. A good example of using sets is organizing IR commands by rooms, devices or code types. Each set has a unique name on the server, therefore eliminating the possibility of a request conflict.
Each set stores individual commands built around the Command model:

namespace Coding4Fun.MissionControl.API.Models
{
public class Command
{
public Command()
{
}

public string Name { get; set; }
public SerializableIRCode Code { get; set; }
}
}

Despite the obvious Name property, you can see that I am using a SerializableIRCode instance that is specific to each model. Before going any further, I need to mention that the Phidgets SDK offers the IRLearnedCode model to store code contents. I could have used it instead, but there is an issue that prevents me from doing that—there is no public constructor defined for IRLearnedCode, therefore there is no way to serialize it, either with the built-in .NET serialization capabilities or JSON.NET, which I am using in the context of the project.
Instead, I have this:

using Phidgets;
namespace Coding4Fun.MissionControl.API.Models
{
public class SerializableIRCode
{
public SerializableIRCode()
{

}

IRLearnedCode code;
public ToggleMask Mask { get; set; }
public int BitSize { get; set; }
public Phidgets.IRCodeInfo.IREncoding Encoding { get; set; }
public int CarrierFrequency { get; set; }
public int DutyCycle { get; set; }
public int Gap { get; set; }
public int[] Header { get; set; }
public byte[] CodeData { get; set; }
public int MinRepeat { get; set; }
public int[] One { get; set; }
public int[] Repeat { get; set; }
public int Trail { get; set; }
public int[] Zero { get; set; }
}
}

It is an almost identical 1:1 copy of the original class, storing both the layout of the IR code and additional information related to its replication mechanism. You can learn more about each property listed in the model above by reading the official document on the topic.
ToggleMask, the identity bit carrier that helps marking the code as repeated or not, is also implemented through a built-in Phidgets SDK model, and it has the same problem as IRLearnedCode. I implemented this model to replace it in the serializable code:

namespace Coding4Fun.MissionControl.API.Models
{
public class ToggleMask
{
public ToggleMask()
{

}

public int BitSize { get; set; }
public byte[] CodeData { get; set; }
}
}

I also needed an easy way to store all sets at once and carry all associated codes in a single instance retrieved from the storage. Here is the Set class:

namespace Coding4Fun.MissionControl.API.Models
{
public class Set
{
public Set()
{
Commands = new List();
}

public string Name { get; set; }
public bool IsList { get; set; }
public List Commands { get; set; }
}
}

Notice that there is an IsList flag that allows me to specify how to display this specific list on the connecting device. This adds some level of flexibility for situations where the user wants to build a virtual remote for closely-related keys, such as digits. With that in mind, displaying those as a list might be inconvenient, wasting visual space on the client. But if the flag is set to false, the list can be displayed as a pad.
Also, when the server performs the data exchange, it provides a single “envelope” that allows the connecting device to easily understand what the server is trying to do:

namespace Coding4Fun.MissionControl.API.Models
{
public class ServerResponse
{
public string Identifier { get; set; }
public string Marker { get; set; }
public string Content { get; set; }
}
}

The Identifier property carries the server IP address. That way, when a device receives a response, it is able to either accept it, because it knows that a response is requested from a target location, or discard it because the user is no longer using the specific server.
Marker carries the command type of the sent command, therefore giving the Windows Phone application a hint as to what to do with the data. The server can send the following commands:

SET_LIST – returns the list of sets that are currently available on the server.SET_COMMANDS:SET_NAME:IS_LIST – returns the list of commands that are associated with a given set that is currently stored on the server.NOTIFICATION – send a simple notification to the client; no further action is required.
Last but not least, Content is used to push the necessary data that is associated with the given Marker. It can be either a JSON-based string that lists the sets or commands, or a plain-text message that is used as an alert for the end-user.
Server Architecture

The server is the only component of this entire system that does all the heavy lifting. It learns commands, stores them and then generates new IR signal requests, as controlled from any of the connected clients. Let’s take a closer look at what happens behind the scenes—to start, I am going to document the network infrastructure.
The Network Layer

In order to be a reliable system, the server needs to be always ready to accept an incoming connection. For that purpose, it is possible to use the TcpListener class—an “always on” receiver that can handle incoming TCP connections. I integrated it in my CoreStarter class that is used to start the listener when the application is launched:

namespace Coding4Fun.MissionControl.API
{
public class CoreStarter
{
static TcpListener listener;

public static void LaunchSocket()
{
Console.WriteLine("Starting socket server on port {0}...", Constants.DEFAULT_PORT);
listener = new TcpListener(NetworkHelper.GetLocalIPAddress(), Constants.DEFAULT_PORT);
listener.Start();

for (int i = 0; i < Constants.MAX_CONCURRENT_CLIENTS; i++)
{
Thread socketThread = new Thread(new ThreadStart(ListenForData));
socketThread.Start();
}
}

private static void ListenForData()
{
Console.WriteLine("Listener thread started.");

while (true)
{
Socket acceptedSocket = listener.AcceptSocket();
using (MemoryStream coreStream = new MemoryStream())
{
try
{
Console.WriteLine("Incoming connection: {0}", acceptedSocket.RemoteEndPoint);

using (Stream sourceStream = new NetworkStream(acceptedSocket))
{
sourceStream.ReadTimeout = Constants.SOCKET_READ_TIMEOUT;

byte[] buffer = new byte[Constants.DEFAULT_BUFFER_SIZE];
int i;

while ((i = sourceStream.Read(buffer, 0, buffer.Length)) != 0)
{
coreStream.Write(buffer, 0, i);
}
}
}
catch
{
string data = Encoding.ASCII.GetString(coreStream.ToArray());

CommandHelper.InterpretCommand(data, acceptedSocket.RemoteEndPoint.ToString());
}
}
}
}
}
}

When LaunchSocket is called, the listener is activated on the current machine. As I mentioned above, the port number can be arbitrarily assigned, but has to be consistent between connecting apps in order for the TCP links to be established. Because I expect that more than one device will be connecting to the service at a time, the listener is set as active across a constant number of threads.
NOTE: By default, a there is a maximum limit of 5 simultaneous clients. Although this number can be adjusted, be aware of the requirements of each environment in which a limited number of potential devices can connect. Even though the performance footprint of each thread is minimal, it can have a negative effect if used in unnecessarily large instances.
ListenForData is used to read the incoming stream. When an inbound connection is accepted, the data is read with the help of a fixed content buffer. Then a read timeout is specified to prevent situations where the stream was completely read but the application still waits to pull non-existent data. Once the timeout milestone is hit, an exception is thrown, which marks the end of the stream—at this point, the plain text data that was received (remember that both the server and client exchange text data only) is passed to the command interpreter—CommandHelper, with a reference to the source of the command.
The commands from the device are passed as serialized key-value pairs (KeyValuePair), the key being the command with any possible suffixes, and the value being the contents of the command itself that helps the server identify the specific item in the local storage.
InterpretCommand,in this case, does three things sequentially:

Deserialize the incoming string and create a KeyValuePair instance.Process the command and check whether it is recognizable.Send a response to the client, if deemed necessary by the command type.
The serialization and deserialization is done via JSON.NET. You can install this package in your console managed Win32 project and the Windows Phone application project via NuGet:

The deserialization step is as simple as one line of C# code:

KeyValuePair result = JsonConvert.DeserializeObject(rawCommand.Remove(0, rawCommand.IndexOf('{')));

The string is sanitized to ensure that only JSON content is being passed to the serializer.
Because of a relatively limited command set, I can put together the entire interpretation stack like this:

// Get the initial list of sets on the target server
if (result.Key == Constants.COMMAND_INIT)
{
SendSets(sourceLocation);
}
// Create a new set on the target server
else if (result.Key.Contains(Constants.COMMAND_CREATE_SET))
{
CreateSet(result, sourceLocation);
SendSets(sourceLocation);
}
// Get the commands that are associated with a given set.
else if (result.Key == Constants.COMMAND_GET_COMMANDS)
{
SendCommands(result.Value, sourceLocation);
}
// The client requested the server to learn a new command.
else if (result.Key.Contains(Constants.COMMAND_LEARN_COMMAND))
{
LearnCommand(result, sourceLocation);
}
// The client requested one of the commands to be executed on the
// target server.
else if (result.Key.Contains(Constants.COMMAND_EXECUTE))
{
ExecuteCommand(result);
}
// The client has requested a set to be deleted from the target server.
else if (result.Key == Constants.COMMAND_DELETE_SET)
{
DeleteSet(result.Value);
SendSets(sourceLocation);
}
// The client has requested a set to be deleted from the target server.
else if (result.Key.Contains(Constants.COMMAND_DELETE_COMMAND))
{
DeleteCommand(result);
SendCommands(result.Key.Split(new char[] { ':' })[1], sourceLocation);
}

All commands are constants, declared in the local helper class:

public const string COMMAND_INIT = "INIT";

public const string COMMAND_CREATE_SET = "CREATE_SET";

public const string COMMAND_GET_COMMANDS = "GET_COMMANDS";

public const string COMMAND_LEARN_COMMAND = "LEARN_COMMAND";

public const string COMMAND_EXECUTE = "EXECUTE";

public const string COMMAND_DELETE_SET = "DELETE_SET";
public const string COMMAND_DELETE_COMMAND = "DELETE_COMMAND";

Notice that these are not the commands that the server sends back, but rather the commands it receives from connecting Windows Phone devices.
Let’s now take a look at the breakdown for each command.
SendSets:

///
/// Send the list of sets to the client that requested those.
///
///
The location of the requesting client.
private static void SendSets(string sourceLocation)
{
Console.WriteLine("Received an initial set query from {0}", sourceLocation);
ServerResponse response = new ServerResponse();
response.Marker = "SET_LIST";
response.Content = JsonConvert.SerializeObject(StorageHelper.GetRawSetNames());
response.Identifier = NetworkHelper.GetLocalIPAddress().ToString();
NetworkHelper.SendData(sourceLocation, JsonConvert.SerializeObject(response));
Console.WriteLine("Sent the set list to {0}", sourceLocation);
}
When this command is received, the server does not have to do much processing. It is only invoked when the client establishes the initiating link and needs to know what possible sets it can get from the target machine. The request is logged in the console and a server response is prepared that contains a serialized list of set names, which is later serialized as well and sent back to the source machine location.
StorageHelper and NetworkHelper will be documented later in this article.
CreateSet:

///
/// Create a new set and store it on the local server.
///
///
The original deserialized command.
///
The location of the requesting client.
private static void CreateSet(KeyValuePair result, string sourceLocation)
{
bool isSuccessful = false;
string[] data = result.Key.Split(new char[] { ':' });

Console.WriteLine("There is an attempt to create the {0} set from {1}.", result.Value, sourceLocation);

if (data[1].ToLower() == "list")
isSuccessful = StorageHelper.AddSet(result.Value);
else
isSuccessful = StorageHelper.AddSet(result.Value, false);

if (isSuccessful)
Console.WriteLine("The {0} set was successfully created.", result.Value);
else
Console.WriteLine("Something happened and the {0} set was not created.", result.Value);
}
When a mobile device attempts to create a new set on the server, it sends a command in the following format:
CREATE_SET:list/pad, SET_NAME
CreateSet will get the type of the set that was created, will check whether a set with the same name already exists and will either create it or ignore the command altogether. No notification is sent to the connecting device, but either the failure or the success of the command is registered in the local console.
SendCommands:

///
/// Send a list of commands that are associated with the pushed set.
///
///
The original deserialized command.
///
The location of the requesting client.
private static void SendCommands(string setName, string sourceLocation)
{
Console.WriteLine("There was a request to get the commands for the {0} set from {1}.", setName, sourceLocation);

bool isList = StorageHelper.IsSetAList(setName);

ServerResponse response = new ServerResponse();
response.Marker = string.Format("SET_COMMANDS:{0}:{1}", setName, isList);
response.Identifier = NetworkHelper.GetLocalIPAddress().ToString();
response.Content = JsonConvert.SerializeObject(StorageHelper.GetRawCommandNames(setName));

NetworkHelper.SendData(sourceLocation, JsonConvert.SerializeObject(response));

Console.WriteLine("Command list for the {0} set were sent to {1}.", setName, sourceLocation);
}
Commands are sent in the same manner as sets—once the set is recognized, the names of the associated commands are retrieved and serialized inside a ServerResponse instance and then pushed back to the requesting device.
LearnCommand:

///
/// Learn a new command and store it on the target server.
///
///
The original deserialized command.
///
The location of the requesting client.
private static void LearnCommand(KeyValuePair result, string sourceLocation)
{
Console.WriteLine("[!] Server in COMMAND LEARNING MODE! Point the remote towards the sensor and send a command.");

string[] data = result.Key.Split(new char[] { ':' });
var set = StorageHelper.GetSingleSet(StorageHelper.GetSets(), data[1]);

if (set != null)
{
if ((from c in set.Commands where c.Name == result.Value select c).FirstOrDefault() != null)
{
Console.WriteLine("Cannot learn command {0} for the following set: {1}. Command already exists.", data[1], result.Value);

ServerResponse response = new ServerResponse();
response.Marker = "NOTIFICATION";
response.Identifier = NetworkHelper.GetLocalIPAddress().ToString();
response.Content = "We could not save the following command - " + result.Value + ". It already exists in the set.";

NetworkHelper.SendData(sourceLocation, JsonConvert.SerializeObject(response));
}
else
{
if (sensor == null)
sensor = new IR();

sensor.open(-1);

sensor.waitForAttachment();

sensor.Learn += (sender, args) =>
{
Console.WriteLine("[!] Server learned the command and is no longer in COMMAND LEARNING MODE.");
IRLearnedCode code = args.LearnedCode;
code.CodeInfo.MinRepeat = 5;

Command command = new Command();
command.Name = result.Value;
command.Code = IRCodeWorker.GetSerializableIRCode(code);

StorageHelper.AddCommand(command, set.Name);

ServerResponse response = new ServerResponse();
response.Marker = "NOTIFICATION";
response.Identifier = NetworkHelper.GetLocalIPAddress().ToString();
response.Content = "The following command has been stored: " + result.Value;

NetworkHelper.SendData(sourceLocation, JsonConvert.SerializeObject(response));
};
}
}
}
Once a request was received that the server needs to learn a new command, an initial verification is done to make sure that the requested command name and set are not already taken. If neither the command nor the set exist, both will be created.
After the basic setup is complete, the IR sensor is activated and will be waiting for the command to be learned. The way it works is quite simple – the sensor will remain in learning mode until the point where it recognizes a command without error, being 100% sure that it can be reproduced internally. You will need to point your remote towards the sensor and hold the button you want captured for one or two seconds in order for the command to be learned.
NOTE: To ensure that a proper transmission is done, I manually set the minimal repeat value to 5. This is the number of times the sensor will fire the same code towards the target. That is the optimal value for a target device to receive the code if the remote is pointed directly at it without necessarily triggering the same command twice or more.
After the command is learned, the code is processed and transformed into a serializable instance. The connecting client is then notified about whether the command was learned.
ExecuteCommand:

///
/// Execute one of the commands currently stored on the local server.
///
///
The original deserialized command.
private static void ExecuteCommand(KeyValuePair result)
{
string[] data = result.Key.Split(new char[] { ':' });

var set = StorageHelper.GetSingleSet(StorageHelper.GetSets(), data[1]);

if (set != null)
{
var command = StorageHelper.GetSingleCommand(StorageHelper.GetCommands(set.Name), result.Value);

IRLearnedCode code = IRCodeWorker.GetLearnedCode(command.Code);

if (sensor == null)
sensor = new IR();

sensor.open(-1);
sensor.waitForAttachment();
sensor.transmit(code.Code, code.CodeInfo);
sensor.close();
}
}
Command execution relies on the hardware sensor. The phone sends a command execution request in the following format:
EXECUTE:SET_NAME, COMMAND_NAME
Once the command is parsed out and found in the local storage, the IR code is transformed back to a model that is recognizable by the Phidgets SDK and transmitted towards the location where the sensor is pointed at the time of the execution.
DeleteSet:

///
/// Delete a single set and all the associated commands
///
///
The name of the set.
private static void DeleteSet(string target)
{
var sets = StorageHelper.GetSets();
var targetSet = StorageHelper.GetSingleSet(sets, target);

if (targetSet != null)
{
StorageHelper.RemoveSet(sets, targetSet);
}
}
When deleting a set, only the name of the set should be specified. The user will get a warning on the client side that requires a confirmation of the deletion. The server will blindly execute the command.
DeleteCommand:

private static void DeleteCommand(KeyValuePair result)
{
var sets = StorageHelper.GetSets();
string setName = result.Key.Split(new char[] {':'})[1];
var targetSet = StorageHelper.GetSingleSet(sets, setName);
var command = (from c in targetSet.Commands where c.Name == result.Value select c).FirstOrDefault();

if (command != null)
{
targetSet.Commands.Remove(command);
StorageHelper.SerializeSets(sets);
}
}

Not only can the user remove entire sets, but he can also target specific commands from a given set. Once a DELETE_COMMAND directive is recognized, the set name is parsed out from the original string, that follows the DELETE_COMMAND:SET_NAME, COMMAND_NAME format, and a simple LINQ query extracts the command instance, removes it and stores the set content on the local hard drive.
Notice that for some commands, particularly for set creation, deletion and command deletion, the server will return a list of the remaining items. The contents will be automatically updated on the devices, which will be waiting for that response. This measure was deliberately introduced to minimize the chances of a user triggering a command that was already deleted or trying to query a previously removed set.
Transforming Codes

You might have noticed that I am using IRCodeWorker.GetSerializableCodeType to transform a Phidgets SDK native IR code model into a serializable one. This is a helper function that performs a field copy of the existing object. Because of the differences in the model structure, it has to be done manually:

public static SerializableIRCode GetSerializableIRCode(IRLearnedCode code)
{
SerializableIRCode sCode = new SerializableIRCode();
sCode.BitSize = code.Code.BitCount;
sCode.Encoding = code.CodeInfo.Encoding;
sCode.CarrierFrequency = code.CodeInfo.CarrierFrequency;
sCode.CodeData = code.Code.Data;
sCode.DutyCycle = code.CodeInfo.DutyCycle;
sCode.Gap = code.CodeInfo.Gap;
sCode.Header = code.CodeInfo.Header;
sCode.MinRepeat = 5;
sCode.One = code.CodeInfo.One;
sCode.Repeat = code.CodeInfo.Repeat;
sCode.Trail = code.CodeInfo.Trail;
sCode.Zero = code.CodeInfo.Zero;
sCode.Mask = new ToggleMask()
{
BitSize = code.CodeInfo.ToggleMask.BitCount,
CodeData = code.CodeInfo.ToggleMask.Data
};

return sCode;
}

The reverse process is easier because I can pass each of the existing properties to the IRCodeInfo constructor. The only difference is the fact that I need to use Reflection to create an instance of IRLearnedCode because there is no public constructor defined and a dynamic object has to be created:

internal static IRLearnedCode GetLearnedCode(SerializableIRCode serializableIRCode)
{
IRCode code = new IRCode(serializableIRCode.CodeData, serializableIRCode.BitSize);
IRCodeInfo info = new IRCodeInfo(serializableIRCode.Encoding, serializableIRCode.BitSize, serializableIRCode.Header,
serializableIRCode.Zero, serializableIRCode.One, serializableIRCode.Trail, serializableIRCode.Gap, serializableIRCode.Repeat,
serializableIRCode.MinRepeat, serializableIRCode.Mask.CodeData, IRCodeInfo.IRCodeLength.Constant,
serializableIRCode.CarrierFrequency, serializableIRCode.DutyCycle);

object[] parameters = new object[] { code, info };

BindingFlags flags = BindingFlags.NonPublic | BindingFlags.Instance;
object instantType = Activator.CreateInstance(typeof(IRLearnedCode), flags, null, parameters, null);

return (IRLearnedCode)instantType;
}

Command and Set Management

Looking back at the code that I put together for the command interpreter, there is one class that does all local content manipulation—StorageHelper. This is a simple class that performs LINQ queries on set as well as command collections, and makes sure that all the changes are preserved in the sets.xml file in the application folder that is used as the only storage place for all the content that is being manipulated by the server.

namespace Coding4Fun.MissionControl.API.Helpers
{
public class StorageHelper
{

///
/// Lists all available sets that are currently stored on the server.
///
/// List of sets on the machine.
internal static List GetSets()
{
List sets = null;

string rawContent = GetRawSets();
sets = JsonConvert.DeserializeObject(rawContent);

return sets;
}

///
/// Returns the list of commands that are associated with the given set.
///
///
The name of the target set.
/// List of commands associated with the given set.
internal static List GetCommands(string setName)
{
List commandList = null;

var sets = GetSets();

Set singleSet = null;
if (sets != null)
singleSet = (from c in sets where c.Name == setName select c).FirstOrDefault();

if (singleSet != null)
{
commandList = singleSet.Commands;
}

return commandList;
}

///
/// Gets the list of names for the commands in the requested set.
///
///
The name of the target set.
/// List of commands associated with the given set.
internal static List GetRawCommandNames(string setName)
{
List commandList = GetCommands(setName);

List stringSet = null;

if (commandList != null)
{
stringSet = commandList.Select(x => x.Name).ToList();
}

return stringSet;
}

///
/// Get the list of names for all sets on the local server.
///
/// List of sets on the machine.
internal static List GetRawSetNames()
{
List sets = GetSets();

List stringSet = null;

if (sets != null)
{
stringSet = sets.Select(x => x.Name).ToList();
}

return stringSet;
}

///
/// Get the raw string contents of sets.xml. Should only be used in the
/// context of this class.
///
/// JSON string representing stored sets and commands.
internal static string GetRawSets()
{
string sets = string.Empty;

if (File.Exists("sets"))
{
using (StreamReader reader = new StreamReader(File.OpenRead("sets")))
{
sets = reader.ReadToEnd();
}
}
else
{
FileStream stream = File.Create("sets.xml");

stream.Close();
}

return sets;
}

///
/// Check whether a set is marked with a IsList flag.
///
///
The name of the target set.
/// TRUE - set is a list. FALSE - set is not a list.
internal static bool IsSetAList(string setName)
{
bool isList = true;
var sets = GetSets();
Set set = null;

if (sets != null)
set = (from c in sets where c.Name == setName select c).FirstOrDefault();

if (set != null)
isList = set.IsList;

return isList;
}

///
/// Serialize the set collection to sets.xml
///
///
Collection to be serialized.
/// true if sets are serialized.
private static bool SerializeSets(List sets)
{
try
{
using (StreamWriter writer = new StreamWriter("sets.xml", false))
{
string data = JsonConvert.SerializeObject(sets);

writer.Write(data);
}

return true;
}
catch
{
return false;
}
}

///
/// Add a new set to the existing global set collection.
///
///
Set name.
/// true if successfully added set.
internal static bool AddSet(string name, bool isList = true)
{
var sets = GetSets();

if (sets == null)
sets = new List();

var singleSet = GetSingleSet(sets, name);

if (singleSet == null)
sets.Add(new Set { Name = name, IsList = isList });

if (SerializeSets(sets))
return true;
else
return false;
}

///
/// Retrieves a single set from a collection that has a specific name.
///
///
The source collection from which to extract the set.
///
The name of the set to get.
/// An instance of the found set, if any.
internal static Set GetSingleSet(List sets, string name)
{
if (sets != null)
return (from c in sets where c.Name == name select c).FirstOrDefault();
else
return null;
}

///
/// Add a IR command to an existing set. If the set is not found, it will be created.
///
///
The command instance to be added.
///
The name of the target set.
/// true if the command was successfully added.
internal static bool AddCommand(Command command, string targetSet)
{
var sets = GetSets();

if (sets == null)
sets = new List();

var singleSet = GetSingleSet(sets, targetSet);

if (singleSet == null)
singleSet = new Set { Name = targetSet };

var singleCommand = (from c in singleSet.Commands where c.Name == command.Name select c).FirstOrDefault();

if (singleCommand == null)
{
singleSet.Commands.Add(command);

if (SerializeSets(sets))
return true;
else
return false;
}
else
return false;
}

///
/// Retrieve a single command instance from one of the sets on the local server.
///
///
Original list of commands.
///
Name of the command to be retrieved.
/// An instance of the command, if found. NULL if not.
internal static Command GetSingleCommand(List commands, string name)
{
if (commands != null)
return (from c in commands where c.Name == name select c).FirstOrDefault();
else
return null;
}

///
/// Remove a set from a local machine.
///
///
Original list of sets.
///
Name of the set to remove.
internal static void RemoveSet(List sets, Set targetSet)
{
sets.Remove(targetSet);

SerializeSets(sets);
}
}
}
Sending Data Back to the Client

SendData in the NetworkHelper class handles all outbound connections. Here is its structure:

///
/// Send data to the target network machine.
///
///
The target machine IP.
///
Data to be sent, in string format.
///
Determines whether to remove the port from the given IP string.
public static void SendData(string destination, string data, bool sanitizeIp = true)
{
using (Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
{
string completeIp = string.Empty;

if (sanitizeIp)
completeIp = destination.Remove(destination.IndexOf(":"), destination.Length - destination.IndexOf(":"));

client.Connect(completeIp, 6169);
client.Send(Encoding.UTF8.GetBytes(data));
}
}
A new stream socket is created in order to connect to the target machine over the TCP pipe. If IP sanitization is enabled, the port is stripped from the address in order to pass a valid IP. A Socket instance cannot directly handle IPs of the format:
255.255.255.0:PORT_NUMBER
Later, in a synchronous manner, a connection is established and the data is sent.
At this point, you can see that the barebones service offers a flexible way to manage content. It can be accessed by any application type as long as the server can be accessed and the application can send commands in the pre-defined format and the content requested is actually located on the target server. This allows for high levels of extensibility and interoperability, as the server usage is not limited to a single platform. If I decide to create a Windows Store application that would allow me to control my TV, I simply need to add socket connection layer that will send plain strings to the machine where the IR sensor is connected.
Similarly, if some functionality needs to be added, it is possible to do so without ever touching the client applications. A modification in the endpoint will be reflected with no direct effect on all connection applications as long as all handled returned and requested values are preserved. The only additional requirement is that if the client applications want to take advantage of newly introduced capabilities, they need to have an updated command transmission layer for the new command types.
In Program.cs, I simply need to start the server through the CoreStarter class:

namespace Coding4Fun.MissionControl.API
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Coding4Fun MissionControl Server");
CoreStarter.LaunchSocket();
}
}
}

Mobile client overview

The mobile client does not have the capability to send commands directly to the IR sensor. Instead, it connects to a remote machine that has the IR sensor plugged in and attempts to invoke a command from the list returned by the service. A single mobile client can support control over multiple servers.
NOTE: Make sure that at the time of working with the Windows Phone client, the server is actually running on your local machine. To make it easier to test, also open port 6169 for incoming connections in Windows Firewall.
When building a Windows Phone application, make sure you have the proper version of the SDK installed, as well as a SLAT-compatible machine if you plan on testing the application in the emulator.
Networking Infrastructure

The Windows Phone application also relies on a network infrastructure somewhat similar to that of the server. There is a TCP listener that is created when the application is started:

// Code to execute when the application is launching (eg, from Start)
// This code will not execute when the application is reactivated
private void Application_Launching(object sender, LaunchingEventArgs e)
{
ServiceSerializer.DeserializeServices();

listener.OnClientConnected += listener_OnClientConnected;
listener.Start(6169);
}

Here, listener is an instance of TcpSocketListener—a custom class designed to handle incoming network connections:

namespace Coding4Fun.MissionControl.WP.Network
{
public class TcpSocketListener : SocketConnectorBase
{
StreamSocketListener coreSocket;

public async void Start(int port)
{
coreSocket = new StreamSocketListener();
coreSocket.ConnectionReceived += coreSocket_ConnectionReceived;

try
{
await coreSocket.BindServiceNameAsync(port.ToString());
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);

coreSocket.Dispose();
coreSocket = null;
OnConnectionCompleted(new ConnectionEventArgs { IsSuccessful = false, DeviceID = string.Empty });
}
}

async void coreSocket_ConnectionReceived(StreamSocketListener sender, StreamSocketListenerConnectionReceivedEventArgs args)
{
Debug.WriteLine("Connection received!");

DataReader reader = new DataReader(args.Socket.InputStream);

try
{
while (true)
{
StringBuilder builder = new StringBuilder();

uint actualLength = 1;

while (actualLength > 0)
{
actualLength = await reader.LoadAsync(256);
builder.Append(reader.ReadString(actualLength));
}

OnConnectionCompleted(new ConnectionEventArgs
{
Socket = args.Socket,
IsSuccessful = true,
DeviceID = args.Socket.Information.RemoteHostName.DisplayName,
Token = builder.ToString()
});
break;
}
}
catch (Exception exception)
{
Debug.WriteLine(exception.Message);

OnConnectionCompleted(new ConnectionEventArgs { IsSuccessful = false });
}
}
}
}

A StreamSocketListener is used for the connection core. When a connection is received, a continuous loop reads the entire contents of the incoming stream. OnConnectionCompleted is declared in the base class—SocketConnectorBase.

namespace Coding4Fun.MissionControl.WP.Network
{
public class SocketConnectorBase
{
public event EventHandler OnClientConnected;
public virtual void OnConnectionCompleted(ConnectionEventArgs connectionArgs)
{
if (OnClientConnected != null)
{
OnClientConnected(this, connectionArgs);
}
}

public event EventHandler OnSendCompletedEvent;
public virtual void OnSendCompleted(bool succeeded)
{
if (OnSendCompletedEvent != null)
{
OnSendCompletedEvent(this, succeeded);
}
}
}

public class ConnectionEventArgs : EventArgs
{
public StreamSocket Socket { get; set; }
public string DeviceID { get; set; }
public string Token { get; set; }
public bool IsSuccessful { get; set; }
}
}

ConnectionEventArgs here is used to identify the content that is passed to the client. DeviceID gives access to the source IP, IsSuccessful tells the developer whether the established connection is active and the Token carries the raw string if any was received.
Sending data is simplified to the maximum with the help of the SocketClient class, which relies on a StreamSocket instance that handles outbound connections and writing to the output stream:

namespace Coding4Fun.MissionControl.WP.Network
{
public class SocketClient : SocketConnectorBase
{
StreamSocket _socket;

public SocketClient()
{
_socket = new StreamSocket();
}

public SocketClient(StreamSocket socket)
{
_socket = socket;
}

public async void Connect(string hostName, int portNumber)
{
try
{
await _socket.ConnectAsync(new HostName(hostName), portNumber.ToString(), SocketProtectionLevel.PlainSocket);

OnConnectionCompleted(new ConnectionEventArgs { IsSuccessful = true });
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);

OnConnectionCompleted(new ConnectionEventArgs { IsSuccessful = false });
}
}

public async void Send(string dataToSend)
{
try
{
using (DataWriter writer = new DataWriter(_socket.OutputStream))
{
// Write the length of the binary data that is being
// sent to the client.
writer.WriteUInt32((UInt32)dataToSend.Length);

writer.WriteString(dataToSend);

// Send the actual data.
await writer.StoreAsync();

writer.DetachStream();

OnSendCompleted(true);
}
}
catch
{
_socket.Dispose();
_socket = null;
OnSendCompleted(false);
}
}
}
}

As with the listener class, SocketClient supports OnConnectionCompleted to notify the application that the connection attempt completed.
Back in App.xaml.cs, the data from the incoming connection captured by the TcpSocketListener instance is passed to the ResponseHelper class:

void listener_OnClientConnected(object sender, ConnectionEventArgs e)
{
ResponseHelper.HandleIncomingResponse(e.Token);
}

This class reads the possible three commands sent by the server and interprets them, creating internal collections from the raw data if the current server IP matches the one obtained in the ServerResponse (the same model in the desktop application):

using Coding4Fun.MissionControl.WP.Models;
using Coding4Fun.MissionControl.WP.ViewModels;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Windows;

namespace Coding4Fun.MissionControl.WP.Misc
{
public class ResponseHelper
{
public static void HandleIncomingResponse(string rawResponse)
{
if (rawResponse != null)
{
ServerResponse response = JsonConvert.DeserializeObject(rawResponse);

if (response.Marker == Constants.COMMAND_SERVER_NOTIFICATION)
{
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
MessageBox.Show(response.Content, "Server Response", MessageBoxButton.OK);
});
}
else
{
if (CommonViewModel.Instance.IsWaiting)
{
if (response.Identifier == CommonViewModel.Instance.CurrentServer.Location)
{
// returns the list of sets that are associated with the current server.
if (response.Marker == Constants.COMMAND_SERVER_SET_LIST)
{

List items = JsonConvert.DeserializeObject(response.Content);

if (items != null)
{
List groupedItems = Group.CreateGroups(items,
CultureInfo.CurrentCulture, (string s) => { return s[0].ToString(); }, true);
SetsPageViewModel.Instance.Sets = groupedItems;
}
else
{
SetsPageViewModel.Instance.Sets = new List();
}

Deployment.Current.Dispatcher.BeginInvoke(() =>
{
CommonViewModel.Instance.IsWaiting = false;

if (!App.RootFrame.CurrentSource.ToString().Contains("SetsPage"))
{
App.RootFrame.Navigate(new Uri("/Views/SetsPage.xaml", UriKind.Relative));
}
});

}
// returns the list of commands associated with a given set.
else if (response.Marker.Contains(Constants.COMMAND_SERVER_SET_COMMANDS))
{
string[] data = response.Marker.Split(new char[] { ':' });
if (data[1] == CommonViewModel.Instance.CurrentSet)
{
bool isList = false;
bool.TryParse(data[2].ToLower(), out isList);

if (isList)
{
CommonViewModel.Instance.CurrentSetType = "list";
}
else
{
CommonViewModel.Instance.CurrentSetType = "pad";
}

CommandsPageViewModel.Instance.Commands = new System.Collections.ObjectModel.ObservableCollection(JsonConvert.DeserializeObject(response.Content));

Deployment.Current.Dispatcher.BeginInvoke(() =>
{
CommonViewModel.Instance.IsWaiting = false;
App.RootFrame.Navigate(new Uri("/Views/CommandsPage.xaml", UriKind.Relative));
});
}
}
}
}
}
}
}
}
}

If the response comes from a server that is different than the one that is currently active, the data is discarded as the user no longer needs it. Also, for specific commands, the mobile application will be on standby, waiting for a response (unless the user decides to cancel the request) – the IsWaiting flag is an application-wide indicator that a pending server action is in the queue.
Same as with the server, the commands in the Windows Phone application are represented through pre-defined constants:

public const string COMMAND_SERVER_SET_LIST = "SET_LIST";

public const string COMMAND_SERVER_SET_COMMANDS = "SET_COMMANDS";

public const string COMMAND_SERVER_NOTIFICATION = "NOTIFICATION";

Let’s now take a closer look at how it is handled internally to build the visual layer.
Handling the Data

The first thing users will see when the application is launched is the list of registered servers:

This is ServiceListPage.xaml




So i play CA (Combat arms, a first person shooter) at around 30-50 frames per second.
sometimes with tweaks i can get to around 43-57 consistent frames per second.
I CAN PROVIDE MORE INFO IF YOU ASK.
--------------------------------------------------------------
3 Incidents:THE MAIN TOPIC OF THIS PROBLEM
On three different computer i have had One moment of insane and godly frames per second around 300-400frames per second

-First time was on my macbook(Dual core 2.6ish GHz /Nvidia, 256 dedicated RAM/ 4GB RAM/)
I installed bootcamp and after a year or so of consistent lagging around 60 frames per second i was lagging in combat arms more , so i reinstalled my Nvidia graphics driver
After i reinstalled i was able to play CA On full graphics Anti-asling x8 anisotropy x8
overall settings high, and still run at around 200+ frames per second
On CA, fallout 3 new vegas, and some others.
As soon as i restarted my laptop it was back to same old laggy 50-60 frames per second.

-On a Metal laptop I had (for like 3 months before i discovered that buzzing feeling was the comp shocking me for those months)I was playing and randomly one night it started running at insane frames per second, i dont remember too much but it was fallout 3 on low then, full graphics.

And most recent on my current AMD quad core:
I was playing laggy games around 20-30 frames per second with lots of freezes.
I reinstalled my graphics drivers and instantly my games were running full graphics and the insane 200-300 frames per second.
Now currently I am running at 30-50 frames per second with rarely any freezes.

--------------------------------------------------------------------------------
MY current laptop: CA 25-55 frames per second
Gateway - Windows 7 home premium 64 BIT
AMD Quadcore 1.5Ghz A8-3500m
4GB RAM DDR3, I did have 6GB but i gave 2GB to my Brother, it only caused me to be at current lower -10 frames per second.
640GB HardDrive space
AMD 6620G, 512 dedicated ram.
1366 x 768 and my VGA Display 1360 x 768.

Macbook/bootcamp:CA 30-80 frames per second
Windows 7 Ultimate 64Bit
dual core 2.6ish GHz
256 dedicated RAM
6GB RAM
250HD space
Gamebooster report has more info

Programs & settings I use
-------------------------------------------------------------------------
- I sometimes use Gamebooster which gives me +5-10fps
- I also have been trying recently the
windows media player booster program with no signs of fps gain.
- I have fully updated windows 7
- I just now reinstalled my graphics driver with no improvement.
- I reinstalled CA alot and do gain too around consistent 50-65 frames per second frames per second for like 3 days.
-I used overdrive for month and it hurt my comp
It did not boost me and it caused my games to jitter and screech, it also caused my laptop to have other erratic problems
(I even set it to run at just over 100% CPU and had same effects)
I run on the lowest graphics on CA and AMD AMD is set to no v-sync, no antiasling, no anisotropy no triple buffer, and such with 30-50 frames still.
- I have tried in lower resolution screens with only small 10 frames per second.
- I have defragged.

Ideas
-------------------------------------------------------------------------
-On the macbook and this AMD quad core i had been playing for over 10 hours
one person told me it takes times for the comp to heat up and then it will run faster
(Problem is I play around 14 hours per day, and it does get faster but only up to around +10 frames and MUCH faster loading speeds)
If this is true, then how could i implement this and keep my comp in correct temperature.
(I have a fan and when i rarely have used it I think it slows my comp down)

-MY CPUs on this quad core never go above 25%
my GPU according to system monitor Gets maxed out during current CA gameplay
Maybe i can somehow get my comp to use my CPUs instead of my GPU?

-I heard the having 3D vision installed on the Nvidia computers sometimes lags people up so i made sure to disable featues like that when i reinstalled, but im not sure if i disabled anything, maybe you know of some feature i should disable.

I think it was prob some feature/setting not being installed with my drivers.
or some setting put in by windows the the AMD/Nvidia driver messed with.
(maybe reinstalling cleared a cache that lags me)

Why it cant be some things.
----------------------------------------------------------------
-I was not running game booster or any program like that.
-I was not running on low graphics i was running on max, after i saw that i was running so fast on low graphics, in attempt to sea how much it could handle.
I had no overdrive.
-I did no hardware changes at all within at least 1-2 months of the 3 incidents.
(probably longer like 1 year)
-I have reinstalled my windows 7 comp and instantly installed CA and then played it with only consistent 50-60 frames.
-Its not CA because i have tried reinstalling and then not installing CA and still ran slow on fallout 3, and even Runescape.
-I have played on no page file, and on 7GB page file
-I have tried turning off themes, running gamebooster, defragging. and it is pretty smooth but still a measly 43-60 frames per second.
-I was playing On 1280 X 800 res during incident.
I defragment.
-------------------------------------------------------------------------------
Current game speeds
AMD
Skyrim 30-40frames per second
-------------------------------------------------------------------------------
None of the weak fixes are what im after im after those moments of pure..........insanity...
Where i had 300-400 frames per second.
but maybe a weak fix will be all i need to tide it over.

I got 10 headshots in a row easily on CA where 10 headshots in a row is as rare as winning lottery.

I dont want to post this and watch it get ignored like most forums.

I know its possible because it happened to me three times, and on this AMD laptop.

I dont think this is a gaming topic because its about graphics, not a specific game.

It also effected the rest of my system at least a little, that i could load games and such faster.

This is unrelated to this problem but im thinking about buying a 8GB RAM stick for my laptop i just want to know how much would that help. My teacher said that upgrading the ram will speed up my computer ALOT. (RAM is Cheap and yet expensive, I need a cheap 8GB high quality stick, newegg.com said $45 and at Freys instore it was like $25ish, but its like 100miles away now)

I have my CISCO IT essentials so i can easily handle windows tasks and i already have used MANY different tweaks of Regitry, and other system tweaks.

---------------------------------------------------------------------------------

----------G----A---M----E---B----O---O---S---T--E----R--------------------

-----------------------R----E----P----O---R---T----------------------------------

Game Booster Diagnose Report v1.0
Version: 3.5.0.1526
Date: 2012/06/26 08:08:20

----------------------------------
01 - Operating System
----------------------------------

0101 - Operating System : Windows 7 Home Premium 64-bit (6.1, Build 7601) Service Pack 1 (7601.win7sp1_gdr.120503-2030)
0102 - Language : English (Regional Setting: English)
0103 - BIOS : InsydeH2O Version CCB.03.61.13V1.04
0104 - Processor : AMD A8-3500M APU with Radeon(tm) HD Graphics (4 CPUs), ~1.5GHz
0105 - Memory : 4096MB RAM
0106 - Available OS Memory : 3562MB RAM
0107 - Page File : 1603MB used, 5520MB available
0108 - Windows Dir : C:Windows
0109 - DirectX Version : DirectX 11
0110 - DX Setup Parameters : Not found
0111 - User DPI Setting : 96 DPI (100 percent)
0112 - System DPI Setting : 96 DPI (100 percent)
0113 - DWM DPI Scaling : Disabled
0114 - DxDiag Version : 6.01.7601.17514

----------------------------------
02 - Processor
----------------------------------

0201 - Caption : AMD A8-3500M APU with Radeon(tm) HD Graphics x4 ~1500MHz
0202 - Current Clock Speed : 1500MHz
0203 - L1 Cache : 512.00 KB
0204 - L2 Cache : 4.00 MB

----------------------------------
03 - Video Adapter
----------------------------------

0301 - Card Name : AMD Radeon HD 6620G
0302 - Manufacturer : Advanced Micro Devices, Inc.
0303 - Chip Type : ATI display adapter (0x9641)
0304 - DAC Type : Internal DAC(400MHz)
0305 - Device Key : EnumPCIVEN_1002&DEV_9641&SUBSYS_05991025&REV_00
0306 - Display Memory : 2022 MB
0307 - AdapterRAM : 512.00 MB
0308 - Current Mode : 1360 x 768 (32 bit) (60Hz)
0309 - Monitor Name : Generic PnP Monitor
0310 - Driver Name : aticfx64.dll,aticfx64.dll,aticfx64.dll,aticfx32,aticfx32,aticfx32,atiumd64.dll,atidxx64.dll,atidxx64.dll,atiumdag,atidxx32,atidxx32,atiumdva,atiumd6a.cap,atitmm64.dll
0311 - Driver Version : 8.17.0010.1124
0312 - Driver Language : English
0313 - DDI Version : 11
0314 - Driver Model : WDDM 1.1
0315 - Driver Beta : False
0316 - Driver Debug : False
0317 - Driver Date : 4/5/2012 19:20:04
0318 - Driver Size : 1067520
0319 - VDD : n/a
0320 - Mini VDD : n/a
0321 - Mini VDD Date : n/a
0322 - Mini VDD Size : 0
0323 - Device Identifier : {D7B71EE2-D501-11CF-F177-9325BEC2C535}
0324 - Vendor ID : 0x1002
0325 - Device ID : 0x9641
0326 - SubSys ID : 0x05991025
0327 - Revision ID : 0x0000
0328 - Driver Strong Name : oem25.inf:ATI.Mfg.NTamd64.6.1:ati2mtag_Sumo_Mobile:8.961.0.0civen_1002&dev_9641
0329 - Rank Of Driver : 00E62001
0330 - Video Accel : ModeMPEG2_A ModeMPEG2_C
0331 - Deinterlace Caps : {6E8329FF-B642-418B-BCF0-BCB6591E255F}: Format(In/Out)=(YUY2,YUY2) Frames(Prev/Fwd/Back)=(0,0,1) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY DeinterlaceTech_PixelAdaptive
{335AA36E-7884-43A4-9C91-7F87FAF3E37E}: Format(In/Out)=(YUY2,YUY2) Frames(Prev/Fwd/Back)=(0,0,0) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY DeinterlaceTech_BOBVerticalStretch
{5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(YUY2,YUY2) Frames(Prev/Fwd/Back)=(0,0,0) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY
{6E8329FF-B642-418B-BCF0-BCB6591E255F}: Format(In/Out)=(UYVY,UYVY) Frames(Prev/Fwd/Back)=(0,0,1) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY DeinterlaceTech_PixelAdaptive
{335AA36E-7884-43A4-9C91-7F87FAF3E37E}: Format(In/Out)=(UYVY,UYVY) Frames(Prev/Fwd/Back)=(0,0,0) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY DeinterlaceTech_BOBVerticalStretch
{5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(UYVY,UYVY) Frames(Prev/Fwd/Back)=(0,0,0) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY
{5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(YV12,0x32315659) Frames(Prev/Fwd/Back)=(0,0,0) Caps=
{3C5323C1-6FB7-44F5-9081-056BF2EE449D}: Format(In/Out)=(NV12,0x3231564e) Frames(Prev/Fwd/Back)=(0,0,2) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY DeinterlaceTech_PixelAdaptive
{552C0DAD-CCBC-420B-83C8-74943CF9F1A6}: Format(In/Out)=(NV12,0x3231564e) Frames(Prev/Fwd/Back)=(0,0,2) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY DeinterlaceTech_PixelAdaptive
{6E8329FF-B642-418B-BCF0-BCB6591E255F}: Format(In/Out)=(NV12,0x3231564e) Frames(Prev/Fwd/Back)=(0,0,1) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY DeinterlaceTech_PixelAdaptive
{335AA36E-7884-43A4-9C91-7F87FAF3E37E}: Format(In/Out)=(NV12,0x3231564e) Frames(Prev/Fwd/Back)=(0,0,0) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY DeinterlaceTech_BOBVerticalStretch
{5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(NV12,0x3231564e) Frames(Prev/Fwd/Back)=(0,0,0) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY
{5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(IMC1,UNKNOWN) Frames(Prev/Fwd/Back)=(0,0,0) Caps=
{5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(IMC2,UNKNOWN) Frames(Prev/Fwd/Back)=(0,0,0) Caps=
{5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(IMC3,UNKNOWN) Frames(Prev/Fwd/Back)=(0,0,0) Caps=
{5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(IMC4,UNKNOWN) Frames(Prev/Fwd/Back)=(0,0,0) Caps=
{5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(S340,UNKNOWN) Frames(Prev/Fwd/Back)=(0,0,0) Caps=
{5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(S342,UNKNOWN) Frames(Prev/Fwd/Back)=(0,0,0) Caps=
0332 - D3D9 Overlay : Not Supported
0333 - DXVA-HD : Not Supported
0334 - DDraw Status : Enabled
0335 - D3D Status : Enabled
0336 - AGP Status : Enabled
0337 - Notes : No problems found.

0338 - OpenGL : 6.1.7600.16385 (win7_rtm.090713-1255)

----------------------------------
04 - Memory
----------------------------------

0401 - Total Memory : 3.48 GB
0402 - Free Memory : 2.21 GB
0403 - Total Pagefile : 6.96 GB
0404 - Free Pagefile : 5.39 GB

0405 - Bank Label : BANK0
0406 - Speed : 1066 MHz
0407 - Total Width : 64 Bits
0408 - Capacity : 2.00 GB

0405 - Bank Label : BANK0
0406 - Speed : 1066 MHz
0407 - Total Width : 64 Bits
0408 - Capacity : 2.00 GB

----------------------------------
05 - Network
----------------------------------

0501 - Description : Broadcom NetLink (TM) Gigabit Ethernet
0502 - Driver Date : 5-10-2011
0503 - Driver Version : 14.8.0.5

----------------------------------
06 - Motherboard
----------------------------------

0601 - Model : SJV50-SB
0602 - Manufacturer : Gateway

----------------------------------
07 - Sound Device
----------------------------------

0701 - Description : Speakers (Realtek High Definition Audio)
0702 - Default Sound Playback : True
0703 - Default Voice Playback : True
0704 - Hardware ID : HDAUDIOFUNC_01&VEN_10EC&DEV_0269&SUBSYS_10250599&REV_1001
0705 - Manufacturer ID : 1
0706 - Product ID : 100
0707 - Type : WDM
0708 - Driver Name : RTKVHD64.sys
0709 - Driver Version : 6.00.0001.6602
0710 - Driver attributes : Final Retail
0711 - Date and Size : 3/27/2012 17:03:36
0713 - Driver Provider : Realtek Semiconductor Corp.
0714 - Min/Max Sample Rate : 5374206, 5374206
0715 - Static/Strm HW Mix Bufs : 5374206, 5374206
0716 - Static/Strm HW 3D Bufs : 5374206, 5374206
0717 - HW Memory : 5374214
0718 - Voice Management : False
0719 - EAX(tm) 2.0 Listen/Src : False, False
0720 - I3DL2(tm) Listen/Src : False, False
0721 - Notes : No problems found.

----------------------------------
08 - Hard Disk
----------------------------------

0801 - Model : TOSHIBA MK6459GSXP ATA Device
0802 - Media Type : Fixed hard disk media
0803 - Size : 596.17 GB
0804 - Interface Type : Serial ATA
0805 - Driver Date : 6-21-2006
0806 - Driver Version : 6.1.7600.16385

0807 - Caption : C:
0808 - Capacity : 578.07 GB
0809 - Free Space : 256.63 GB
0810 - Drive Type : 3-Fixed
0811 - File System : NTFS

----------------------------------
09 - Process
----------------------------------

0901 - 000 Idle 0 0 0
0901 - 004 System 0 0 0
0901 - 114 smss.exe 0 0 0 normal
0901 - 1e4 csrss.exe 0 0 0 normal
0901 - 22c wininit.exe 0 0 0 high
0901 - 270 services.exe 0 0 0 normal
0901 - 280 lsass.exe 0 0 0 normal
0901 - 288 lsm.exe 0 0 0 normal
0901 - 320 svchost.exe 0 0 0 normal
0901 - 370 svchost.exe 0 0 0 normal
0901 - 3f4 svchost.exe 0 0 0 normal
0901 - 1b8 svchost.exe 0 0 0 normal
0901 - 1e8 svchost.exe 0 0 0 normal
0901 - 418 svchost.exe 0 0 0 normal
0901 - 4d4 svchost.exe 0 0 0 normal
0901 - 5d4 svchost.exe 0 0 0 normal
0901 - 648 dsiwmis.exe 0 0 0 normal C:Program Files (x86)Launch Manager
0901 - 684 ePowerSvc.exe 0 0 0 normal
0901 - 6a4 svchost.exe 0 0 0 normal
0901 - 878 svchost.exe 0 0 0 normal
0901 - ab4 svchost.exe 0 0 0 normal
0901 - c44 dllhost.exe 0 0 0 normal
0901 - d4c svchost.exe 0 0 0 normal
0901 - ec4 spoolsv.exe 0 0 0 normal
0901 - f14 csrss.exe 2 170 78 normal
0901 - c88 winlogon.exe 2 6 0 high
0901 - f74 LMutilps32.exe 2 14 4 normal C:Program Files (x86)Launch Manager
0901 - a5c taskhost.exe 2 21 15 normal
0901 - 658 dwm.exe 2 19 2 high
0901 - 8e4 explorer.exe 2 341 239 normal
0901 - dbc RAVCpl64.exe 2 54 19 normal
0901 - d04 PresentationFontCache.exe 0 0 0 normal
0901 - 9b4 taskhost.exe 2 14 4 normal
0901 - e98 atiesrxx.exe 0 0 0 normal
0901 - 9dc atieclxx.exe 2 9 7 normal
0901 - c04 Fuel.Service.exe 0 0 0 normal
0901 - 824 MOM.exe 2 10 9 normal
0901 - 840 CCC.exe 2 73 61 normal
0901 - 568 firefox.exe 2 66 58 normal C:Program Files (x86)Mozilla Firefox
0901 - 3d4 plugin-container.exe 2 33 38 normal C:Program Files (x86)Mozilla Firefox
0901 - 9e8 GameBooster.exe 2 1597 95 normal C:Program Files (x86)IObitGame Booster 3
0901 - 9a4 gbtray.exe 2 54 43 normal C:Program Files (x86)IObitGame Booster 3
0901 - e60 FPSClient.exe 2 35 27 normal C:Program Files (x86)IObitGame Booster 3
0901 - 11c WmiPrvSE.exe 0 0 0 normal
0901 - e40 WmiPrvSE.exe 0 0 0 normal
0901 - d00 audiodg.exe 0 0 0

----------------------------------
10 - Service
----------------------------------

1001 - Application Experience - [C:Windowssystem32svchost.exe -k netsvcs]
1001 - AMD External Events Utility - [C:Windowssystem32atiesrxx.exe]
1001 - Windows Audio Endpoint Builder - [C:WindowsSystem32svchost.exe -k LocalSystemNetworkRestricted]
1001 - Windows Audio - [C:WindowsSystem32svchost.exe -k LocalServiceNetworkRestricted]
1001 - Base Filtering Engine - [C:Windowssystem32svchost.exe -k LocalServiceNoNetwork]
1001 - Background Intelligent Transfer Service - [C:WindowsSystem32svchost.exe -k netsvcs]
1001 - Computer Browser - [C:WindowsSystem32svchost.exe -k netsvcs]
1001 - Cryptographic Services - [C:Windowssystem32svchost.exe -k NetworkService]
1001 - DHCP Client - [C:Windowssystem32svchost.exe -k LocalServiceNetworkRestricted]
1001 - DNS Client - [C:Windowssystem32svchost.exe -k NetworkService]
1001 - Dritek WMI Service - [C:Program Files (x86)Launch Managerdsiwmis.exe]
1001 - Extensible Authentication Protocol - [C:WindowsSystem32svchost.exe -k netsvcs]
1001 - ePower Service - [C:Program FilesGatewayGateway Power ManagementePowerSvc.exe]
1001 - Windows Event Log - [C:WindowsSystem32svchost.exe -k LocalServiceNetworkRestricted]
1001 - COM+ Event System - [C:Windowssystem32svchost.exe -k LocalService]
1001 - Function Discovery Provider Host - [C:Windowssystem32svchost.exe -k LocalService]
1001 - Function Discovery Resource Publication - [C:Windowssystem32svchost.exe -k LocalServiceAndNoImpersonation]
1001 - Windows Font Cache Service - [C:Windowssystem32svchost.exe -k LocalServiceAndNoImpersonation]
1001 - Windows Presentation Foundation Font Cache 3.0.0.0 - [C:WindowsMicrosoft.NetFramework64v3.0WPFPresentationFontCache.exe]
1001 - Human Interface Device Access - [C:Windowssystem32svchost.exe -k LocalSystemNetworkRestricted]
1001 - HomeGroup Listener - [C:WindowsSystem32svchost.exe -k LocalSystemNetworkRestricted]
1001 - HomeGroup Provider - [C:WindowsSystem32svchost.exe -k LocalServiceNetworkRestricted]
1001 - IKE and AuthIP IPsec Keying Modules - [C:Windowssystem32svchost.exe -k netsvcs]
1001 - IP Helper - [C:WindowsSystem32svchost.exe -k NetSvcs]
1001 - CNG Key Isolation - [C:Windowssystem32lsass.exe]
1001 - Server - [C:Windowssystem32svchost.exe -k netsvcs]
1001 - Workstation - [C:WindowsSystem32svchost.exe -k NetworkService]
1001 - TCP/IP NetBIOS Helper - [C:Windowssystem32svchost.exe -k LocalServiceNetworkRestricted]
1001 - Windows Firewall - [C:Windowssystem32svchost.exe -k LocalServiceNoNetwork]
1001 - Network Connections - [C:WindowsSystem32svchost.exe -k LocalSystemNetworkRestricted]
1001 - Network List Service - [C:WindowsSystem32svchost.exe -k LocalService]
1001 - Network Location Awareness - [C:WindowsSystem32svchost.exe -k NetworkService]
1001 - Network Store Interface Service - [C:Windowssystem32svchost.exe -k LocalService]
1001 - Peer Networking Identity Manager - [C:WindowsSystem32svchost.exe -k LocalServicePeerNet]
1001 - Peer Networking Grouping - [C:WindowsSystem32svchost.exe -k LocalServicePeerNet]
1001 - Program Compatibility Assistant Service - [C:Windowssystem32svchost.exe -k LocalSystemNetworkRestricted]
1001 - Plug and Play - [C:Windowssystem32svchost.exe -k DcomLaunch]
1001 - Peer Name Resolution Protocol - [C:WindowsSystem32svchost.exe -k LocalServicePeerNet]
1001 - IPsec Policy Agent - [C:Windowssystem32svchost.exe -k NetworkServiceNetworkRestricted]
1001 - Power - [C:Windowssystem32svchost.exe -k DcomLaunch]
1001 - User Profile Service - [C:Windowssystem32svchost.exe -k netsvcs]
1001 - Security Accounts Manager - [C:Windowssystem32lsass.exe]
1001 - System Event Notification Service - [C:Windowssystem32svchost.exe -k netsvcs]
1001 - Shell Hardware Detection - [C:WindowsSystem32svchost.exe -k netsvcs]
1001 - Print Spooler - [C:WindowsSystem32spoolsv.exe]
1001 - SSDP Discovery - [C:Windowssystem32svchost.exe -k LocalServiceAndNoImpersonation]
1001 - Superfetch - [C:Windowssystem32svchost.exe -k LocalSystemNetworkRestricted]
1001 - Themes - [C:WindowsSystem32svchost.exe -k netsvcs]
1001 - Distributed Link Tracking Client - [C:WindowsSystem32svchost.exe -k LocalSystemNetworkRestricted]
1001 - Desktop Window Manager Session Manager - [C:WindowsSystem32svchost.exe -k LocalSystemNetworkRestricted]
1001 - Windows Defender - [C:WindowsSystem32svchost.exe -k secsvcs]
1001 - Windows Management Instrumentation - [C:Windowssystem32svchost.exe -k netsvcs]
1001 - WLAN AutoConfig - [C:Windowssystem32svchost.exe -k LocalSystemNetworkRestricted]
1001 - Security Center - [C:WindowsSystem32svchost.exe -k LocalServiceNetworkRestricted]
1001 - Windows Update - [C:Windowssystem32svchost.exe -k netsvcs]
1001 - Windows Driver Foundation - User-mode Driver Framework - [C:Windowssystem32svchost.exe -k LocalSystemNetworkRestricted]
1001 - AMD FUEL Service - [C:Program FilesATI TechnologiesATI.ACEFuelFuel.Service.exe /launchService]

----------------------------------
11 - Windows Express
----------------------------------

1101 - System Score : 5.9
1102 - Memory Score : 5.9
1103 - CPU Score : 6.6
1104 - Graphics Score : 5.9
1105 - Gaming Score : 6.5
1106 - Disk Score : 5.9

----------------------------------
12 - Event Log
----------------------------------

1201 - Time : 6/26/2012 8:48:55 PM
1202 - Source : WinMgmt
1203 - Description : Event filter with query "SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA "Win32_Processor" AND TargetInstance.LoadPercentage > 99" could not be reactivated in namespace "//./root/CIMV2" because of error 0x80041003. Events cannot be delivered through this filter until the problem is corrected.

1201 - Time : 6/26/2012 8:30:04 PM
1202 - Source : Application Hang
1203 - Description : The program explorer.exe version 6.1.7601.17567 stopped interacting with Windows and was closed. To see if more information about the problem is available, check the problem history in the Action Center control panel.
Process ID: fd4
Start Time: 01cd53064db9af16
Termination Time: 0
Application Path: C:Windowsexplorer.exe
Report Id: 9b95fa7e-bf8a-11e1-876f-b870f4b31d76

1201 - Time : 6/26/2012 12:53:55 AM
1202 - Source : Application Error
1203 - Description : Faulting application name: WLXPhotoGallery.exe, version: 15.4.3555.308, time stamp: 0x4f596a69
Faulting module name: atidxx32.dll, version: 8.17.10.342, time stamp: 0x4dddd162
Exception code: 0xc0000005
Fault offset: 0x0000e2a4
Faulting process id: 0x8e0
Faulting application start time: 0x01cd52f315cd647f
Faulting application path: C:Program Files (x86)Windows LivePhoto GalleryWLXPhotoGallery.exe
Faulting module path: C:Windowssystem32atidxx32.dll
Report Id: 592a60dc-bee6-11e1-876f-b870f4b31d76

1201 - Time : 6/25/2012 9:31:57 PM
1202 - Source : Application Error
1203 - Description : Faulting application name: Engine.exe, version: 0.0.0.0, time stamp: 0x4fd800ca
Faulting module name: unknown, version: 0.0.0.0, time stamp: 0x00000000
Exception code: 0xc00000fd
Fault offset: 0x73bee2d4
Faulting process id: 0xf08
Faulting application start time: 0x01cd52d449c626a7
Faulting application path: C:NexonCombat ArmsEngine.exe
Faulting module path: unknown
Report Id: 225568f9-beca-11e1-876f-b870f4b31d76

1201 - Time : 6/25/2012 12:44:43 PM
1202 - Source : WinMgmt
1203 - Description : Event filter with query "SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA "Win32_Processor" AND TargetInstance.LoadPercentage > 99" could not be reactivated in namespace "//./root/CIMV2" because of error 0x80041003. Events cannot be delivered through this filter until the problem is corrected.

1201 - Time : 6/26/2012 10:44:08 PM
1202 - Source : Service Control Manager
1203 - Description : The AMD External Events Utility service terminated unexpectedly. It has done this 1 time(s).

1201 - Time : 6/26/2012 8:47:39 PM
1202 - Source : Service Control Manager
1203 - Description : The Cyberlink RichVideo64 Service(CRVS) service terminated unexpectedly. It has done this 1 time(s).

1201 - Time : 6/26/2012 8:47:36 PM
1202 - Source : Service Control Manager
1203 - Description : The PnkBstrA service terminated unexpectedly. It has done this 1 time(s).

1201 - Time : 6/26/2012 8:35:21 PM
1202 - Source : Service Control Manager
1203 - Description : The Volume Shadow Copy service terminated unexpectedly. It has done this 1 time(s).

1201 - Time : 6/26/2012 8:35:12 PM
1202 - Source : Service Control Manager
1203 - Description : The Windows Defender service terminated unexpectedly. It has done this 1 time(s). The following corrective action will be taken in 60000 milliseconds: Restart the service.

----------------------------------
End of file - 23098 Bytes




Top Ten Linux Distributions

DistroWatch.com: Put the fun back into computing. Use Linux, BSD.

The bewildering choice and the ever increasing number of Linux distributions can be confusing for those who are new to Linux. This is why this page was created. It lists 10 Linux distributions (plus an honourable mention of FreeBSD, by far the most popular of all of the BSDs), which are generally considered as most widely-used by Linux users around the world. There are no figures to back it up and there are many other distributions that might suit your particular purpose better, but as a general rule, all of these are popular and have very active forums or mailing lists where you can ask questions if you get stuck. Ubuntu, Linux Mint and PCLinuxOS are considered the easiest for new users who want to get productive in Linux as soon as possible without having to master all its complexities. On the other end of the spectrum, Slackware Linux, Gentoo Linux and FreeBSD are more advanced distributions that require plenty of learning before they can be used effectively. openSUSE, Fedora, Debian GNU/Linux and Mandriva Linux can be classified as good "middle-road" distributions. CentOS is an enterprise distribution, suitable for those who prefer stability, reliability and long-term support over cutting-edge features and software.

The launch of Ubuntu was first announced in September 2004. Although a relative newcomer to the Linux distribution scene, the project took off like no other before, with its mailing lists soon filled in with discussions by eager users and enthusiastic developers. In the few years that followed, Ubuntu has grown to become the most popular desktop Linux distribution and has greatly contributed towards developing an easy-to-use and free desktop operating system that can compete well with any proprietary ones available on the market.

What was the reason for Ubuntu's stunning success? Firstly, the project was created by Mark Shuttleworth, a charismatic South African multimillionaire, a former Debian developer and the world's second space tourist, whose company, the Isle of Man-based Canonical Ltd, is currently financing the project. Secondly, Ubuntu had learnt from the mistakes of other similar projects and avoided them from the start - it created an excellent web-based infrastructure with a Wiki-style documentation, creative bug-reporting facility, and professional approach to the end users. And thirdly, thanks to its wealthy founder, Ubuntu has been able to ship free CDs to all interested users, thus contributing to the rapid spread of the distribution.

On the technical side of things, Ubuntu is based on Debian "Sid" (unstable branch), but with some prominent packages, such as GNOME, Firefox and OpenOffice.org, updated to their latest versions. It has a predictable, 6-month release schedule, with an occasional Long Term Support (LTS) release that is supported with security updates for 3 - 5 years, depending on the edition (non-LTS release are supported for 18 months). Other special features of Ubuntu include an installable live CD, creative artwork and desktop themes, migration assistant for Windows users, support for the latest technologies, such as 3D desktop effects, easy installation of proprietary device drivers for ATI and NVIDIA graphics cards and wireless networking, and on-demand support for non-free or patent-encumbered media codecs.

Pros: Fixed release cycle and support period; novice-friendly; wealth of documentation, both official and user-contributedCons: Lacks compatibility with DebianSoftware package management: Advanced Package Tool (APT) using DEB packagesAvailable editions: Ubuntu, Kubuntu, Xubuntu, Ubuntu Studio and Mythbuntu for 32-bit (i386) and 64-bit (x86_64) processors; Ubuntu Server edition also for SPARC processorsSuggested Ubuntu-based alternatives: Linux Mint (desktop), gOS (desktop with Google applications), OpenGEU (desktop with Enlightenemnt), Ultimate Edition (desktop), CrunchBang Linux (desktop with Openbox), gNewSense (free software)

Although Fedora was formally unveiled only in September 2004, its origins effectively date back to 1995 when it was launched by two Linux visionaries -- Bob Young and Marc Ewing -- under the name of Red Hat Linux. The company's first product, Red Hat Linux 1.0 "Mother's Day", was released in the same year and was quickly followed by several bug-fix updates. In 1997, Red Hat introduced its revolutionary RPM package management system with dependency resolution and other advanced features which greatly contributed to the distribution's rapid rise in popularity and its overtaking of Slackware Linux as the most widely-used Linux distribution in the world. In later years, Red Hat standardised on a regular, 6-month release schedule.

In 2003, just after the release of Red Hat Linux 9, the company introduced some radical changes to its product line-up. It retained the Red Hat trademark for its commercial products, notably Red Hat Enterprise Linux, and introduced Fedora Core, a Red Hat-sponsored, but community-oriented distribution designed for the "Linux hobbyist". After the initial criticism of the changes, the Linux community accepted the "new" distribution as a logical continuation of Red Hat Linux. A few quality releases was all it took for Fedora to regain its former status as one of the best-loved operating systems on the market. At the same time, Red Hat quickly became the biggest and most profitable Linux company in the world, with an innovative product line-up and other interesting initiatives, such as its Red Hat Certified Engineer (RHCE) certification programme.

Although Fedora's direction is still largely controlled by Red Hat, Inc. and the product is sometimes seen -- rightly or wrongly -- as a test bed for Red Hat Enterprise Linux, there is no denying that Fedora is one of the most innovative distributions available today. Its contributions to the Linux kernel, glibc and GCC are well-known and its more recent integration of SELinux functionality, Xen virtualisation technologies and other enterprise-level features are much appreciated among the company's customers. On a negative side, Fedora still lacks a clear desktop-oriented strategy that would make the product easier to use for those beyond the "Linux hobbyist" target.

Pros: Highly innovative; outstanding security features; large number of supported packages; strict adherence to the Free Software philosophyCons: Fedora's priorities tend to lean towards enterprise features, rather than desktop usabilitySoftware package management: YUM graphical and command line utility using RPM packagesAvailable editions: Fedora for 32-bit (i386), 64-bit (x86_64) and PowerPC (ppc) processors; Red Hat Enterprise Linux for i386, IA64, PowerPC, s390x and x86_64 architectures; also live CD editions with either GNOME or KDESuggested Fedora-based alternatives: BLAG Linux And GNU (desktop, free software), Berry Linux (live CD), Yellow Dog Linux (Apple's PowerPC-based systems)Suggested Red Hat-based alternatives: CentOS, Scientific Linux, StartCom Enterprise Linux

The beginnings of openSUSE date back to 1992 when four German Linux enthusiasts -- Roland Dyroff, Thomas Fehr, Hubert Mantel and Burchard Steinbild -- launched the project under the name of SuSE (Software und System Entwicklung) Linux. In the early days, the young company sold sets of floppy disks containing a German edition of Slackware Linux, but it wasn't long before SuSE Linux became an independent distribution with the launch of version 4.2 in May 1996. In the following years, the developers adopted the RPM package management format and introduced YaST, an easy-to-use graphical system administration tool. Frequent releases, excellent printed documentation, and easy availability of SuSE Linux in stores across Europe and North America resulted in growing popularity of the distribution.

SuSE Linux was acquired by Novell, Inc. in late 2003. Major changes in the development, licensing and availability of SUSE Linux followed shortly afterwards - YaST was released under the General Public License, the ISO images were freely distributed from public download servers, and, most significantly, the development of the distribution was opened to public participation for the first time. Since the launch of the openSUSE project and the release of version 10.0 in October 2005, the distribution became completely free in both senses of the word. The openSUSE code has become a base system for Novell's commercial products, first named as Novell Linux, but later renamed to SUSE Linux Enterprise Desktop and SUSE Linux Enterprise Server.

Today, openSUSE has a large following of satisfied users. The principal reason for openSUSE getting high marks from its users are pleasant and polished desktop environments (KDE and GNOME), excellent system administration utility (YaST), and, for those who buy the boxed edition, some of the best printed documentation available with any distribution. However, the recent deal between Novell and Microsoft, which apparently concedes to Microsoft's argument that it has intellectual property rights over Linux, has resulted in a string of condemnation by many Linux personalities and has prompted some users to switch distributions. Although Novell has downplayed the deal and Microsoft has yet to exercise any rights, this issue remains a thorn in the side of the otherwise very community-friendly Linux company.

Pros: Comprehensive and intuitive configuration tool; large repository of software packages, excellent web site infrastructure and printed documentationCons: Novell's patent deal with Microsoft in November 2006 seemingly legitimised Microsoft's intellectual property claims over Linux; its resource-heavy desktop setup and graphical utilities are sometimes seen as "bloated and slow"Software package management: YaST graphical and command line utility using RPM packagesAvailable editions: openSUSE for 32-bit (i386), 64-bit (x86_64) and PowerPC (ppc) processors (also installable live CD edition); SUSE Linux Enterprise Desktop/Server for i586, IA64, PowerPC, s390, s390x and x86_64 architectures

Debian GNU/Linux was first announced in 1993. Its founder, Ian Murdock, envisaged the creation of a completely non-commercial project developed by hundreds of volunteer developers in their spare time. With sceptics far outnumbering optimists at the time, it was destined to disintegrate and collapse, but the reality was very different. Debian not only survived, it thrived and, in less than a decade, it became the largest Linux distribution and possibly the largest collaborative software project ever created!

The success of Debian GNU/Linux can be illustrated by the following numbers. It is developed by over 1,000 volunteer developers, its software repositories contain more than 20,000 packages (compiled for 11 processor architectures), and it is responsible for inspiring over 120 Debian-based distributions and live CDs. These figures are unmatched by any other Linux-based operating system. The actual development of Debian takes place in three main branches (or four if one includes the bleeding-edge "experimental" branch) of increasing levels of stability: "unstable" (also known as "sid"), "testing" and "stable". This progressive integration and stabilisation of packages and features, together with the project's well-established quality control mechanisms, has earned Debian its reputation of being one of the best-tested and most bug-free distributions available today.

However, this lengthy and complex development style also has some drawbacks: the stable releases of Debian are not particularly up-to-date and they age rapidly, especially since new stable releases are only published once every 1 - 3 years. Those users who prefer the latest packages and technologies are forced to use the potentially buggy Debian testing or unstable branches. The highly democratic structures of Debian have led to controversial decisions and gave rise to infighting among the developers. This has contributed to stagnation and reluctance to make radical decisions that would take the project forward.

Pros: Very stable; remarkable quality control; includes over 20,000 software packages; supports more processor architectures than any other Linux distributionCons: Conservative - due to its support for many processor architectures, newest technologies are not always included; slow release cycle (one stable release every 1 - 3 years); discussions on developer mailing lists and blogs can be uncultured at timesSoftware package management: Advanced Package Tool (APT) using DEB packagesAvailable editions: Installation CD/DVD and live CD images for 11 processor architectures, including all 32-bit and 64-bit processors from Intel, AMD, Power and othersSuggested Debian-based alternatives: MEPIS Linux, Ubuntu, sidux. Damn Small Linux (for old computers), KNOPPIX (live CD), Dreamlinux (desktop), Elive (desktop with Enlightenment), Xandros (commercial), 64 Studio (multimedia)

Mandriva Linux was launched by Gaël Duval in July 1998 under the name of Mandrake Linux. At first, it was just a re-mastered edition of Red Hat Linux with the more user-friendly KDE desktop, but the subsequent releases also added various user-friendly touches, such as a new installer, improved hardware detection, and intuitive disk partitioning utility. As a result of these enhancements, Mandrake Linux flourished. After attracting venture capital and turning into a business, the fortunes of the newly established MandrakeSoft fluctuated widely between a near bankruptcy in early 2003 to a flurry of acquisitions in 2005. The latter, after merging with Brazil's Conectiva, saw the company change its name to Mandriva.

Mandriva Linux is primarily a desktop distribution. Its best loved features are cutting edge software, superb system administration suite (DrakConf), excellent implementation of its 64-bit edition, and extensive internationalisation support. It had an open development model long before many other popular distributions, with intensive beta testing and frequent stable releases. In recent years, it has also developed an array of installable live CDs and has launched Mandriva Flash - a complete Mandriva Linux system on a bootable USB Flash device. It was the first major distribution that offered out-of-the box support for popular netbooks, such as ASUS Eee PC.

Despite the technical excellence, Mandriva Linux has had a roller coaster ride in recent years. This has partly to do with the emergence of other user-friendly distributions that have caught up with Mandriva, but also with some controversial decisions by the company which have alienated a sector of the distribution's user base. Mandriva's web presence is a messy conglomeration of several different web sites, while its "Mandriva Club", originally designed to provide added value to paying customers, has been getting mixed reviews. Although the company has been addressing some of the criticism, it continues to face an uphill battle in persuading new Linux users or users of other distributions to try (and buy) its products.

Pros: Beginner-friendly, especially the commercial edition; excellent central configuration utility; very good out-of-the-box support for dozens of languages; installable live CDCons: Lacks a comprehensive marketing strategy to compete with other major distributions, non-existent Mandriva books show lack of "mindshare" among publishing housesSoftware package management: URPMI with Rpmdrake (a graphical front-end for URPMI) using RPM packages; "SMART" available as an alternative methodAvailable editions: Freely downloadable Mandriva "Free" installation media for 32-bit (i586) and 64-bit (x86_64) processors; freely downloadable Mandriva "One" installable live media for 32-bit (i586) processors; commercial Mandriva PowerPack edition for 32-bit (i586) and 64-bit (x86_64) processors; also high-end "Corporate" solutions for desktops and servers, all with long-term support options

Linux Mint, a distribution based on Ubuntu, was first launched in 2006 by Clement Lefebvre, a French-born IT specialist living and working in Ireland. Originally maintaining a Linux web site dedicated to providing help, tips and documentation to new Linux users, the author saw the potential of developing a Linux distribution that would address the many usability drawbacks associated with the generally more technical, mainstream products. After soliciting feedback from the visitors on his web site, he proceeded with building what many refer to today as an "improved Ubuntu".

But Linux Mint is not just an Ubuntu with a new set of applications and an updated desktop theme. Since its beginnings, the developers have been adding a variety of graphical "mint" tools for enhanced usability; this includes mintDesktop - a utility for configuring the desktop environment, mintMenu - a new and elegant menu structure for easier navigation, mintInstall - an easy-to-use software installer, and mintUpdate - a software updater, just to mention a few more prominent ones among several other tools and hundreds of additional improvements. The project also designs its own artwork, while its reputation for ease of use has been further enhanced by the inclusion of proprietary and patent-encumbered multimedia codecs that are often absent from larger distributions due to potential legal threats. However, one of the best features of Linux Mint is the fact that the developers listen to the users and are always fast in implementing good suggestions.

While Linux Mint is available as a free download, the project generates revenue from donations, advertising and professional support services. It doesn't have a fixed release schedule or a list of planned features, but one can expect a new version of Linux Mint several weeks after each stable Ubuntu release. Besides the "main" edition which features the GNOME desktop, the project also builds a variety of semi-regular "community" editions with alternative desktops, such as KDE, Xfce and Fluxbox. However, these are often completed several months after the release of the "main" GNOME edition and may sometimes miss some of the "minty" tools and other features found in the project's flagship product. Linux Mint does not adhere to the principles of software freedom and it does not publish security advisories.

Pros: Superb collection of "minty" tools developed in-house, hundreds of user-friendly enhancements, inclusion of multimedia codecs, open to users' suggestionsCons: The alternative "community" editions don't always include the latest features, the project does not issue security advisoriesSoftware package management: APT with mintInstall using DEB packages (compatible with Ubuntu repositories)Available editions: A "main" edition (with GNOME) for 32-bit and 64-bit computers, a variety of "community" editions (with KDE, Xfce and Fluxbox) for 32-bit computersPossible alternatives: Ubuntu, SimplyMEPIS

PCLinuxOS was first announced in 2003 by Bill Reynolds, better known as "Texstar". Prior to creating his own distribution, Texstar was already a well-known developer in the Mandrake Linux community of users for building up-to-date RPM packages for the popular distribution and providing them as a free download. In 2003 he decided to build a new distribution, initially based on Mandrake Linux, but with several significant usability improvements. The goals? It should be beginner-friendly, have out-of-the box support for proprietary kernel modules, browser plugins and media codecs, and should function as a live CD with a simple and intuitive graphical installer.

Several years and development releases later, PCLinuxOS is rapidly approaching its intended state. In terms of usability, the project offers out-of-the-box support for many technologies most Windows-to-Linux migrants would expect from their new operating system. On the software side of things, PCLinuxOS is a KDE-oriented distribution, with a customised and always up-to-date version of the popular desktop environment. Its growing software repository contains other desktops, however, and offers a great variety of desktop packages for many common tasks. For system configuration, PCLinuxOS has retained much of Mandriva's excellent Control Centre, but has replaced its package management system with APT and Synaptic, a graphical package management front-end.

On the negative side, PCLinuxOS lacks any form of roadmap or release goals. Despite the growing community involvement in the project, most development and decision-making remains in the hands of Texstar who tends to be on the conservative side when judging the stability of a release. As a result, the development process of PCLinuxOS tends to be long and a new version is not released until all known bugs are solved. There are currently no plans for a 64-bit edition of PCLinuxOS.

Pros: Out-of-the-box support for graphics drivers, browser plugins and media codecs; fast boot times; up-to-date softwareCons: No 64-bit edition offered; no out-of-the-box support for non-English languages; lacks release planningSoftware package management: Advanced Package Tool (APT) using RPM packagesAvailable editions: MiniMe, Junior and BigDaddy editions for 32-bit (i586) processor architecturesSuggested PCLinuxOS-based alternatives: SAM Linux Desktop, Granular Linux

Slackware Linux, created by Patrick Volkerding in 1992, is the oldest surviving Linux distribution. Forked from the now-discontinued SLS project, Slackware 1.0 came on 24 floppy disks and was built on top of Linux kernel version 0.99pl11-alpha. It quickly became the most popular Linux distribution, with some estimates putting its market share to as much as 80% of all Linux installations in 1995. Its popularity decreased dramatically with the arrival of Red Hat Linux and other, more user-friendly distributions, but Slackware Linux still remains a much-appreciated operating system among the more technically-oriented system administrators and desktop users.

Slackware Linux is a highly technical, clean distribution, with only a very limited number of custom utilities. It uses a simple, text-based system installer and a comparatively primitive package management system that does not resolve software dependencies. As a result, Slackware is considered one of the cleanest and least buggy distributions available today - the lack of Slackware-specific enhancements reduces the likelihood of new bugs being introduced into the system. All configuration is done by editing text files. There is a saying in the Linux community that if you learn Red Hat, you'll know Red Hat, but if you learn Slackware, you'll know Linux. This is particularly true today when many other Linux distributions keep developing heavily customised products to meet the needs of less technical Linux users.

While this philosophy of simplicity has its fans, the fact is that in today's world, Slackware Linux is increasingly becoming a "core system" upon which new, custom solutions are built, rather than a complete distribution with a wide variety of supported software. The only exception is the server market, where Slackware remains popular, though even here, the distribution's complex upgrade procedure and lack of officially supported automated tools for security updates makes it increasingly uncompetitive. Slackware's conservative attitude towards the system's base components means that it requires much manual post-installation work before it can be tuned into a modern desktop system.

Pros: Highly stable, clean and bug-free, strong adherence to UNIX principlesCons: Limited number of officially supported applications; conservative in terms of base package selection; complex upgrade procedureSoftware package management: "pkgtool" using TXZ packagesAvailable editions: Installation CDs and DVD for 32-bit (i486) and 64-bit (x86_64) processorsSuggested Slackware-based alternatives: Zenwalk Linux (desktop), VectorLinux (desktop), SLAX (live CD), Slamd64 Linux (64-bit), Bluewhite64 Linux (64-bit), Wolvix (desktop, live CD), GoblinX (desktop, live CD)Other distributions with similar philosophies: Arch Linux, Frugalware Linux

The concept of Gentoo Linux was devised in around the year 2000 by Daniel Robbins, a former Stampede Linux and FreeBSD developer. It was the author's exposure to FreeBSD and its "autobuild" feature called "ports", which inspired him to incorporate some of the FreeBSD software management principles into Gentoo under the name of "portage". The idea was to develop a Linux distribution that would allow users to compile the Linux kernel and applications from source code directly on their own computers, thus maintaining a highly-optimised and always up-to-date system. By the time the project released its 1.0 version in March 2002, Gentoo's package management was considered a superior alternative to some binary package management systems, especially the then widely-used RPM.

Gentoo Linux was designed for power users. Originally, the installation was cumbersome and tedious, requiring hours or even days of compiling on the command line to build a complete Linux distribution; however, in 2006 the project simplified the installation procedure by developing an installable Gentoo live CD with a point-and-click installer. Besides providing an always up-to-date set of packages for installation with a single command, the other important features of the distribution are excellent security, extensive configuration options, support for many architectures, and the ability to keep the system up-to-date without re-installing. The Gentoo documentation was repeatedly labelled as the best online documentation of any distribution.

Gentoo Linux has lost much of its original glory in recent years. Some Gentoo users have come to a realisation that the time-consuming compiling of software packages brings only marginal speed and optimisation benefits. Ever since the resignation of Gentoo's founder and benevolent dictator from the project in 2004, the newly established Gentoo Foundation has been battling with lack of clear directions and frequent developer conflicts, which resulted in several high-profile departures of well-known Gentoo personalities. It remains to be seen whether Gentoo can regain its innovative qualities of the past or whether it will slowly disintegrate into a loose collection of personal sub-projects lacking clearly-defined goals.

Pros: Excellent software management infrastructure, unparalleled customisation and tweaking options, superb online documentationCons: Occasional instability and risk of breakdown, the project suffers from lack of directions and frequent infighting between its developersSoftware package management: "Portage" using source (SRC) packagesAvailable editions: Minimal installation CD and live CD (with GNOME) for Alpha, AMD64, HPPA, IA64, MIPS, PPC, SPARC and x86 processors; also "stages" for manual installation from command lineSuggested Gentoo-based alternatives: SabayonLinux (desktop, live CD/DVD), Ututo (desktop, free software only)Other source-based distributions: Lunar Linux, Source Mage GNU/Linux, Sorcerer, Linux From Scratch

Launched in late 2003, CentOS is a community project with the goals of rebuilding the source code for Red Hat Enterprise Linux (RHEL) into an installable Linux distribution and to provide timely security updates for all included software packages. To put in more bluntly, CentOS is nothing more than a clone of RHEL. The only technical difference between the two is branding - CentOS replaces all Red Hat trademarks and logos with its own. But the connection between RHEL and CentOS is not immediately visible on the CentOS web site; due to trademark laws, Red Hat is referred to as a "Prominent North American Enterprise Linux Vendor", instead of its proper name. Nevertheless, the relations between Red Hat and CentOS remain amicable and many CentOS developers are in active contact with Red Hat engineers.

CentOS is often seen as a reliable server distribution. It comes with the same set of well-tested and stable Linux kernel and software packages that form the basis of its parent, Red Hat Enterprise Linux. Despite being a community project run by volunteers, it has gained a reputation of being a solid, free alternative to the more costly server products on the market, especially among the experienced Linux system administrators. CentOS is also suitable as an enterprise desktop solution, specifically where stability, reliability and long-term support are preferred over latest software and features. Like RHEL, CentOS is supported with a minimum of 5 years of security updates.

Despite its advantages, CentOS might not be the best solution in all deployment scenarios. Those users who prefer a distribution with the latest Linux technologies and newest software packages should look elsewhere. Major CentOS versions, which follow RHEL versioning, are only released every 2 - 3 years, while "point" releases (e.g. 5.1) tend to arrive in 6 - 9 month intervals. The point releases do not usually contain any major features (although they do sometimes include support for more recent hardware) and only a handful of software packages may get updated to newer versions. The Linux kernel, the base system and most application versions remain unchanged, but occasionally a newer version of an important software package (e.g. OpenOffice.org or Firefox) may be provided on an experimental basis. As a side project, CentOS also builds updated packages for the users of its distributions, but the repositories containing them are not enabled by default as they may break upstream compatibility.

Pros: Extremely well-tested, stable and reliable; free to download and use; comes with 5-years of free security updates; prompt releases and security updatesCons: Lacks latest Linux technologies; by the time of release, most software packages are outdatedSoftware package management: YUM graphical and command line utility using RPM packagesAvailable editions: Installation DVDs and installable live CDs (with GNOME) for i386 and x86_64 processors; older versions (3.x and 4.x) also available for Alpha, IA64 and IBM z-series (s390, s390x) processors.Other RHEL clones and CentOS-based distributions: Scientific Linux, SME Server, StartCom Enterprise Linux, Fermi Linux, Rocks Cluster Distribution, Oracle Enterprise Linux

FreeBSD, an indirect descendant of AT&T UNIX via the Berkeley Software Distribution (BSD), has a long and turbulent history dating back to 1993. Unlike Linux distributions, which are defined as integrated software solutions consisting of the Linux kernel and thousands of software applications, FreeBSD is a tightly integrated operating system built from a BSD kernel and the so-called "userland" (therefore usable even without extra applications). This distinction is largely lost once installed on an average computer system - like many Linux distributions, a large collection of easily installed, (mostly) open source applications are available for extending the FreeBSD core, but these are usually provided by third-party contributors and aren't strictly part of FreeBSD.

FreeBSD has developed a reputation for being a fast, high-performance and extremely stable operating system, especially suitable for web serving and similar tasks. Many large web search engines and organisations with mission-critical computing infrastructures have deployed and used FreeBSD on their computer systems for years. Compared to Linux, FreeBSD is distributed under a much less restrictive license, which allows virtually unrestricted re-use and modification of the source code for any purpose. Even Apple's Mac OS X is known to have been derived from BSD. Besides the core operating system, the project also provides over 15,000 software applications in binary and source code forms for easy installation on top of the core FreeBSD.

While FreeBSD can certainly be used as a desktop operating system, it doesn't compare well with popular Linux distributions in this department. The text-mode system installer offers little in terms of hardware detection or system configuration, leaving much of the dirty work to the user in a post-installation setup. In terms of support for modern hardware, FreeBSD generally lags behind Linux, especially in supporting popular desktop and laptop gadgets, such as wireless network cards or digital cameras. Those users seeking to exploit the speed and stability of FreeBSD on a desktop or workstation should consider one of the available desktop FreeBSD projects, rather than FreeBSD itself.

Pros: Fast and stable; availability of over 15,000 software applications (or "ports") for installation; very good documentationCons: Tends to lag behind Linux in terms of support for exotic hardware, limited availability of commercial applications; lacks graphical configuration toolsSoftware package management: A complete command-line package management infrastructure using either binary packages or source-based "ports" (TBZ)Available editions: Installation CDs for Alpha, AMD64, i386, IA64, PC98 and SPARC64 processorsSuggested FreeBSD-based alternatives: PC-BSD (desktop), DesktopBSD (desktop), FreeSBIE (live CD)Other BSD alternatives: OpenBSD, NetBSD, DragonFly BSD, MidnightBSD




Hello all,

I'm new around here and I've got a problem with my networking.

Relevant Hardware:
Asus Sabertooth (first verson) 990FX Maim board.
2x WD 7200RPM HDs
Windows 7 Ult x64

Background:
I install 2 disk hard drives into my computer to set them up into a Raid 0.

Now I got them installed and the the raid set up. But when I boot back into windows I find that the Realtek Network Controller is missing. After several days I finally learned that its actually a bug between Windows 7 and the Realtek Network Controller and a lot of people seem to be suffering from it. About the only method is to cut power to the PC for 10+ minutes.

The gist was that Windows 7 put the network controller into a "Deep Sleep Mode" and the BIOS could not override this (in fact the BIOS said the controller was enabled when it really wasn't). Since it seems that the actually active BIOS and the one I actually flash are not exactly the same thing I'm thinking this issue is caused by Windows 7.

Now I went ahead and installed Windows 7 on the Raid 0 setup to see if it was just OS specific. Turns out the device was still turned off and neither OS install could turn it back on.

I did go to the Realtek website (the Asus drivers were out of date, although I tried them at least once anyways) and installed those drivers.

When I reboot the computer, it says the device is there, if I try to reinstall the device it says that it doesn't exist again. The behavior is exactly the same no matter which boot I use.

Now the entire rest of the system works perfectly and the actual port was at the far end of the board from where I was working.

So right now I've tried both of my ethernet cables. Both work fine when I plug them into my laptop but not my desktop so I don't think those are the issue. I have taken some q-tips (no cleaner) and wiped off the contacts on the motherboard and the cable although this produced no change in behavior.

What is very weird is that both the router and the mainboard have a small LED light that is supposed to light up when the cable is connected. When I hook up the cable, the router's LED is on and doing that rapid flash it seems to do when talking to a computer (and it does this continously) but the mainboard's port does not light up.

On the Windows end, when the Device Manager says the Network Controller is working perfectly, the message is that its "Connected to a Unknown Network" and "No Network Access" (not internet, just network, seems to be different errors). If I unplug the cable from either end then it just says "Not Connected - No connections are available".

Another thing I noticed (memory is a little blury after 5 days) is that when the Device Manager says that it cannot find the Network Controller the registry data for that controller (in the current control set) is also missing.

And I apologize, this should have been written earlier, but unchecking the box's in the Controller's power options (so the OS couldn't turn it off) had no effect on the device disappearing.

This last round I had windows auto-install a driver for the controller is and is coming back with the reboot for the time being.

Problem:
Windows cannot seem to connect to my router. Info above.

Thats about all I can give you. I don't have any space on the mainboard to put a NIC card because all of the space is taken by 2 bricks (Radeon 6950 cards) so the port is all I've got.

Can anyone help me? Thanks!




I built my computer in 2001, and here are the specs fully
assembled, when problems started:

Epox EP-8KHA+ Motherboard (VIA KT266A chipset)
AMD Athlon 1800+ (1.53GHz)
2 Micron 256MB PC2100 DDR SDRAM
2 Maxtor 6L040J2 40GB 7200rpm ATA-133 drives
Enermax 350w PSU
Silicon Image ATA-133 PCI RAID adapter (Sil0680 chipset)
Creative Labs Audigy MP3+ PCI card w/ IEEE1394
Inno3D GeForce2 MX 400 4x AGP video card
3Com 10/100 PCI NIC
Toshiba SD-M1502 DVD drive
Brand name CD-RW drive (I forget the brand)
Agere Systems PCI soft modem
Full, legal version of WinXP Pro SP1

I haven't changed my computer's configuration since it
was built, and everything has been working fine

until the past few weeks. My computer started to randomly
reboot at any given time, no matter what

application I was using, even when I wasn't using the PC
and it was idle. It would immediately go to a

blue screen that would flash on the screen for a few
seconds before rebooting. Occasionally there was an

error at Windows startup as well that said the computer
recovered from a serious error and asked me to

report it to MS - I did, and every time it would tell me
a device driver caused the problem but wouldnt

tell me which. A few times, it said it was a graphics
device driver that caused it. Knowing this, I made

sure I had the most up-to-date graphics adapter drivers -
I did. I then tried older drivers, and the PC

was still rebooting. Suspecting a video hardware failure,
I removed my card and tried a different video

card - no help, the PC still rebooted and gave me errors.

I figured my Windows install was corrupt, so I
reformatted my PC and reinstalled WindowsXP - didn't

help. In fact, it even gave me a blue screen and rebooted
during Windows setup (after I had formatted

the drive).

I used the Microsoft-provided memory diagnostics check,
and the memory passed all tests without a hitch.

Next I decided to remove all components in my PC except
the essentials. I took out everyting except the

video card, CD drive, and one hard drive. I disabled the
RAID 0 and took out the RAID card so I was down

to one Maxtor 40GB hard drive hooked directly to the
motherboard IDE. I took out the sound card, network

card, and modem. I reformatted this drive and reinstalled
Windows on it, but the Pc still had the same

problems. I also cleaned the inside of the PC with a
compressed gas duster and made sure the fans were

all clean.

Now I was suspecting either a Power Supply failure or
motherboard/processor failure. My motherboard was

setup to sound an alarm or turn off the system if the CPU
was too hot or the fans weren't working.

However, this never happened. I opted to try the least
expensive fix for the situation. I replaced my

power supply with a brand new Antec 350w SmartPower.
Didn't help. However, during replacing the PSU and

cleaning out the inside of the PC, I noticed that the
transistors on the motherboard (I dont know what

they're called actually - perhaps capacitators? ...those
silver pencil-eraser-sized barrels wrapped in

sheathing), particularly the ones around the processor
had a rust-colored chemical buildup of some kind

on the top of them. I gently scraped as much of it off
them as I could.

I am at a loss for what to do next. Is it time to go
ahead and buy a new motherboard/processor, or are

there other things I didn't check that I should have.
PLEASE HELP ME!!!! Any help would be greatly

appreciated.

Thanks,

Joe Przedwiecki





{I'm here. So if you posted it, I will reply you as soon as possible}
2. The client computer cannot be online properly by ICS.
It can connect to SOME websites only, not all.
Examples of unaccessible websites:
- www.altavista.com
- www.yahoo.com.hk
- www.sohu.com
and quite a few... etc.

The configuration and settings (very long. You may read some parts only):
=============================================

Hardware and Software Configuration
Main/Host Computer
- Desktop Computer
- OS: Win XP Pro
- 2 LAN (I call it LAN-M1, LAN-M2)
- 1 straight cable is linked from ASDL modem to LAN-M1
- 1 cross-over cable is linked from LAN-M2 to my client computer
- Norton Anti-Virus installed
- Norton Internet Security installed

Client Computer
- Notebook Computer
- OS: Win XP Home
- 1 LAN (I call it LAN-C)
- Norton Anti-Virus installed
- Norton Internet Security installed

ISP broadband company:
- Family 3Mbps ADSL Modem

The setting in "Control Panel | Network Connection"
In Main/Host Computer
LAN network:
LAN-M1
I have clicked the following:
- Client for MS Netowork
- File and Printer Sharing for MS Netowork
- QoS Packet Scheduler
- Internet Protocol
In IP setting:
- Automatically get IP
- Auto get DNS
In Advanced Tab:
- turn on: Internet Connection Firewall
- Clicked: Allow other network users to connect through this computer's Internet
connection
- NOT clicked: Allow other network users to control or stop Internet connection
sharing

LAN-M2
I have clicked the following:
- {same as above, ie Client for MS Netowork...}
In IP setting:
- IP address: 192.168.0.1
- SubNet Mask: 255.255.255.0
- Default Gateway: {empty}
- Usual DNS: 202.61.98.227
- Other DNS: 202.61.97.235
[The DNS value is from PPP adaptor Family. I found it by running command and
input "ipconfig /all"]

In Advanced Tab:
- Unavailable (ie grey out): Internet Connection Firewall
- Unavailable: Allow other network users to connect through this computer's
Internet connection
- Unavailable: Allow other network users to control or stop Internet connection
sharing

Broadband:
Family
In Network Function Tab
I have clicked the following:
- {same as above, ie Client for MS Netowork...}
In IP setting:
- Automatically get IP
- Auto get DNS
In Advanced Tab
- Clicked: Internet Connection Firewall
- Clicked: Allow other network users to connect through this computer's Internet
connection
- Unclicked: Establish a dial-up connection whenever a computer on my network
attempts to access the Internet
- Unclicked: Allow other network users to control or stop Internet connection
sharing

In Client Computer
LAN-C
I have clicked the following:
- Client for MS Netowork
- File and Printer Sharing for MS Netowork
- QoS Packet Scheduler
- Internet Protocol
In IP setting:
- Automatically get IP
- Auto get DNS
In Advanced Tab:
- turn on: Internet Connection Firewall
- Unavailable: Allow other network users to connect through this computer's
Internet connection
- Unavailable: Allow other network users to control or stop Internet connection
sharing

The setup wizard I have run:
In Host computer
- Go to "Start | Program Files | Accessories | Network Installation Wizard"
- Choose "This computer directly connects to the Internet..."
- Choose "the Broadband one" (ie Family)
- Give the computer a unique name (NB: it is NOT the same name as all other
comp)
- Give the workgroup a name (NB: All comp use the same workgroup name
- Done!

In Client computer
- Go to "Start | Program Files | Accessories | Network Installation Wizard(ºô¸ô
¦w¸ËºëÆF)"
- Choose "This computer connects to the Internet by another computer..."
- Give the computer a unique name (NB: it is NOT the same name as all other
comp)
- Give the workgroup a name (NB: All comp use the same workgroup name
- Done!

Point to note:
- The following message never appears during the configuration of LAN/broadband:
"When Internet Connection Sharing is enabled, your LAN adapter will be set to
use IP
address 192.168.0.1. Your computer may lose connectivity with other computers on
your network. If these other computers have static IP addresses, it is a good
idea to set them to obtain their IP addresses automatically. Are you sure you
want to enable Internet
Connection Sharing?"

- No matter I enable / disable Norotn Internet Security(NIS), the problem still
occurs.
I never make a particular settihng in NIS regarding the ICS and its small
network.

Thanks for reading.




Hi,
My Dell XP laptop came with an Intel Pro/Wireless 2200 b/g internal adapter preinstalled with its own software, which has always worked quite well. Recently, shortly after some problems with my wireless provider (their tower had some serious problems, and about 80 plus customers were affected), I have begun having problems loading some sites and maintaining connection.

Usually, I'll start surfing and everything seems fine. Then a site will start to load and hang, about half loaded, and things grind to a crawl. Sometimes, it will finish and sometimes not. And, it seems to then affect other sites I try to load. I can't be certain it's the connection. It could be coming from my ZoneAlarm firewall, my isp, or the Windows privacy site blocker too.

I would like to try an external TP-Link high gain USB adapter, to see if the same problems crop up with a different adapter. I did update java and my Intel wireless adapter's driver already. If I disable the Intel Pro, and install the USB adapter, will this risk the setup of my internal adapter, which I still want to use?

In doing some forum searches, I'm not finding anything about having both types installed, but I am finding this type of comments:
"Some computer and hardware manufacturers provide their own configuration software that replaces the Wireless Zero Configuration service that is provided in Windows. In that case, you must use the software that is provided by the manufacturer to configure your wireless network. If you want to use the Wireless Network Setup Wizard or the View Available Wireless Networks feature to configure your wireless device, see the documentation that came with your computer or with your wireless network card. Use this documentation to determine whether you can use the Wireless Zero Configuration service to configure your wireless network. Sometimes, you cannot use the Windows functionality."

Can someone tell me if I'm getting into a bad area to install this additional adapter, and/or maybe point me in the right direction? I know just enough about this to get myself in trouble. Thanks. Judy


Page 1 of 3.
Results 1...20 of 51