mount.ntfs using 100% cpu with vmware-player on Ubuntu 10.04

I had problems running vmware images from a mounted ntfs filesystem in Ubuntu 10.04. The problem was that the process mount.ntfs used 100% CPU and froze my computer only a few moments after starting the image in wmware-player. I guess the mounting of ntfs filesystems aren’t that good in Ubuntu. At least not when you have an application that is very write-intensive.

The solution was to open the .vmx file and add this row:
workingDir = ”../../../var/vmware”

This is where vmware-player stores ”suspend files and snapshots. The path should be relative to the image-dir and be writable to the user running vmware-player. And of course, don’t change the path to another mounted ntfs-filesystem. You should also be able to edit the workingdir by using the vmware-player GUI as well. Look at screenshot below.

Huawei e220 på Telenor mobilt bredband

Sommaren närmar sig och som vanligt så letar man efter den mest kostnadseffektiva lösningen för att få tillgång till internet i sommarstugan. Förra året använde vi oss, i brist på bra alternativ, av Telias mobila bredband och ett abbonemang som vi var tvungna att ha i 12 månader trots att vi bara behövde det 3 månader. Vi kom aldrig upp i hastigheter över GPRS på grund av någon slags radioskugga precis där vi har stugan i Havstoviken på Alnö. Så det var ingen rolig upplevelse. Läs mitt test av mobilt bredband på södra alnö.

Nåväl, i år har utbudet breddats och nu finns det mobila bredband med kontantkort. Detta passar ju perfekt för oss som bara behöver bredbandet i 3 månader. Telenor och Tre har de bästa erbjudandena eftersom de inte har någon uttalad begränsning på användandet medans övriga operatörer som Telia/Glocalnet/Tele2 har en begränsning på 5GB trafik per månad.

Jag bestämde mig att för att testa Telenors erbjudande där man fick köpa enbart SIM-kortet (modemlöst) för 99kr där en veckas surf (värde 89kr) ingick. Eftersom jag har ett Telia-låst Huawei E220 modem från fjolårets abbonemang så tänkte jag att man borde kunna använda det om man bara kunde låsa upp modemet. Sedan så har aldrig Telenor använt sig av det modemet i sitt utbud så de har ingen support för det.

Modemet Huawei e220 kunde man låsa upp gratis visade det sig om man bara kunde hacka lite själv. Metoden som beskrivs på Mobila bredbands forum fungerade däremot inte för mig. Den unlocking-kod som genereras på webbsidan blir fel trots att jag matar in rätt IMEI-nummer. Om man följer den här metoden så fick jag däremot ut en helt annan kod som fungerade. Programmen som används för detta fungerar dock väldigt dåligt i Windows7 x86 och x64 så jag rekommenderar att man gör det på en XP-maskin. Modemet blev upplåst efter en hel del möda!

Nästa steg var att unbranda mobilen samt att få in den senaste firmwaren för 7.2 Mbit. Detta görs i två steg. Först ska man lägga in den senaste firmwaren, dvs det som sköter all kommunikation etc. Sedan ska man lägga in mjukvaran (dashboard) i modemet, dvs det program/drivrutiner som man använder sig av för att koppla upp sig mot Internet. Jag testade först både Tres (3Connect) samt Tele2′s mjukvara men inga utav dessa fungerade eftersom dessa inte går att ändra (byta apn) så att de fungerar mot Telenor. Till slut så använde jag den generiska (huawei) versionen av mjukvaran som jag hittade här (HOST11.107.05.00.03) Efter att ha installerat drivrutiner och dashboard så måste man gå in och ställa in modemet för att ansluta mot Telenors apn som är internet.telenor.se. Se bild nedan:

Modemet fungerar nu perfekt i de miljöer jag testat det, dvs. Windows XP, Win7 (x86 & x64) och Ubuntu. Allra enklast att ansluta var det i Ubuntu där man inte behövde installera något alls. Det var bara att koppla in modemet, välja operatör (APN) och ansluta. Se bild nedan.

Telenor har bäst mobilt bredband på södra Alnö

Telenor har alltså bäst (snabbast) mobilt bredband i sommarstugetäta södra Alnö utanför Sundsvall. Eftersom det finns väldigt många sommarstugor i området så hoppas jag att fler har nytta av denna post. Givetvis kan förhållandena variera från område till område men jag tror ändå att Telenor har bäst täckning totalt sett.

Efter förra årets debacle när familjen valde Telias bredband till sommarstugan i Havstoviken så fick inte samma misstag ske igen. Hastigheten under förra sommaren var under all kritik (dålig GPRS) men har man bundit upp sig med årsabbonemang så har man. Till denna säsong så finns nu mobilt bredband kontant vilket kan vara ett bra alternativ om man bara behöver bredbandet i sommarstugan under 3 månader. Man laddar då bara kortet per månad. Ett sådant kort för Telenor har jag nu testkört under en veckas tid.

Operatörerna har på sina täckningskartor över södra Alnö full täckning med 3G, men det vet jag ju sedan förra året att det inte stämmer i Telias fall. Utrustad med både ett Telia och ett Telenor sim-kort så kopplade jag upp mig med samma modem (Huawei e220) och på samma plats (Havstoviken) för att se skillnaden mellan de två.

Följande resultat fick jag i undersökningen med TP-test samt bredbandskollen

Telia (samma nät som Tele2)

TCP nedströms : 148.86 kbit/s

TCP uppströms : 79.31 kbit/s

UDP nedströms : 196.49 kbit/s

UDP uppströms : 102.16 kbit/s

Telenor (samma nät som Tre)

TCP nedströms : 3.08 Mbit/s

TCP uppströms : 338.28 kbit/s

UDP nedströms : 3.47 Mbit/s

UDP uppströms : 381.80 kbit/s

Summering
Med Telenor så fick jag bra täckning och fart i sommarstugan. Telenor kör cirklar runt Telia för både upp och nedladdning. Med Telia fick jag samma dåliga resultat som ifjol, vilket var riktigt uselt. Undvik Telia på Södra Alnö och allra helst om du har sommarstuga/boende i närheten av Havstoviken.

Tillägg
4 juli 2010 – Får samma resultat vid Säludden (mellan Havstoviken – Spikarna)

Synkronisera bokmärken mellan flera datorer

Jag har äntligen hittat det perfekta plugin’et till Firefox så att jag kan synkronisera bokmärken mellan flera datorer via egen server. Jag har ju några datorer och det är otroligt frustrerande att inte ha med sig sina bokmärken på alla datorer. Jag har tidigare tittat på Xmarks men då sparar man bokmärkena på Xmarks servrar vilket jag inte tycker är så kul.

Firefox tillägget heter Xmarks BYOS edition och är en egen version av Xmarks plugin där man lagrar datat på sin egen server. Efter att ha testat så verkar den fungera så att den kopplar upp sig med ftp mot min server vid synkronisering och sparar allt till en enda fil (den adress jag anger ex: ftp://kallekula.com/bookmarks). Efter ett första test så verkar det fungera riktigt bra.

Beskrivning

Bookmark Sync ”Bring Your Own Server” Edition (BYOS). For expert users who wish to sync their bookmarks and passwords using their own FTP or WebDAV server.

Goodbye php eAccelerator and welcome APC

Goodbye eaccelerator, your decision to remove the functionality that I use in eAccelerator 0.9.6 is a dead end for me. I am lucky that I wrote my software to check if ”eaccelerator_put” functions exists on runtime, otherwise my website would have been down by now after updating from 0.9.3.

The release info says it all:
”The theme of this release is: back to basics! All non-essential functionality has been removed from eAccelerator. The key and content cache and the session functions have been removed. ”

The theme of this release is a killer for me. I have used eAccelerator for many years with great success but now its time to move on. I am now looking for other php cache systems and I also have to rewrite my code. It is not that much work but it has to be done, sadly. I hope there is something good or better then eAccelerator waiting for me in the FreeBSd ports-tree…

… and I found the prefect solution for me in Alternative PHP Cache – APC. It is going to be included (by default?) in PHP6 so I think it is the best choice for me and others. The most important functionality for me right now is apc_add or apc_store which should be the equivalent of eaccelerator_put. Great!

How to install APC in FreeBSD
cd /usr/ports/www/pecl-APC
make install clean

And remember to uncomment eaccelerator from php.ini.

du – file space usage

Då har det äntligen hänt i och med att jag bytt uppdrag på jobbet. Jag har börjat köra Ubuntu 10.04 till vardags. Nåväl det blir ett annat blogginlägg om hur det har gått framöver…

Detta inlägg blir mest bara som en minnesanteckning för ett kommando som jag alltid glömmer bort men som är nyttigt.

Kommandot är: du -hs /var/*

Vad gör då det? Ja man får ut storleken/totalsumman av alla filer i ”mapparna” och listar det ”human-readable”.

Google streetview bilen i Sundsvall

Jag gillar verkligen Google. Häromdagen så såg jag att Streetview bilen var här i Sundsvall för att fota våra gator och torg. Den var parkerad utanför mitt hus så man kan ju undra vad den gjorde där.

Sending email in FreeBSD with Gmail

When I moved my mail functionality (gmail) from my FreeBSD-server to Google Apps I was left with no way to send email from my server (sendmail disabled and gmail removed) from shell. I have no longer the need to recieve email from my server, thanks to Google! However, I needed to send emails from my server to report server status and report software/hardware errors.

This is how I solved the problem on my FreeBSD 7.0 server.

1. Freebsd has a guide for setting up send only with ssmtp. First you should install ssmtp.

cd /usr/ports/mail/ssmtp/ && make install clean

2. Then you need to configure ssmtp for Gmail. Create this file in /usr/local/etc/ssmtp/ssmtp.conf. Replace email and password with your Gmail-account settings.

root=youremail@gmail.com
mailhub=smtp.gmail.com:587
AuthUser=youremail@gmail.com
AuthPass=yourpassword
UseSTARTTLS=YES

3. Test ssmtp. First you have to create a textfile with the message that you are going to send. Copy the text between the lines below.

Save the text to ”testmessage.txt”.
————————–
To: youremail@gmail.com
From: youremail@gmail.com
Subject: Testmessage

This is a test
--------------------------

Then run this command to send the testmessage.

ssmtp -v youremail@gmail.com < testmessage.txt

You should see the following output:

[<-] 220 mx.google.com ESMTP 14sm2982172ewy.10
[->] EHLO mysql
[<-] 250 PIPELINING
[->] STARTTLS
[<-] 220 2.0.0 Ready to start TLS
[->] EHLO servername
[<-] 250 PIPELINING
[->] AUTH LOGIN
[<-] 334 VXNlcm5hbWU6
[->] bWFyY3VzLm55YkBnbWFpbC5jb20=
[<-] 334 UGFzc3dvcmQ6
[<-] 235 2.7.0 Accepted
[->] MAIL FROM:
[<-] 250 2.1.0 OK 14sm2982172ewy.10
[->] RCPT TO:
[<-] 250 2.1.5 OK 14sm2982172ewy.10
[->] DATA
[<-] 354 Go ahead 14sm2982172ewy.10
[->] Received: by Servername (sSMTP sendmail emulation); Tue, 09 Mar 2010 12:53:14 +0100
[->] From: "Username"
[->] Date: Tue, 09 Mar 2010 12:53:14 +0100
[->] To: youremail@gmail.com
[->] Subject: Testmessage
[->]
[->] This is a test
[->] .
[<-] 250 2.0.0 OK 1268135596 14sm2982172ewy.10
[->] QUIT
[<-] 221 2.0.0 closing connection 14sm2982172ewy.10

If everything seems ok you should now have a fresh email in your Gmail account. Check it out! If not, then you should probably check your ssmtp.conf file and verify that you can connect to smtp.google.com

4. Last, replace sendmail with ssmtp. This makes ssmtp the default mailer for your system.

mv /usr/sbin/sendmail /usr/sbin/sendmail.org
ln -s /usr/local/sbin/ssmtp /usr/sbin/sendmail

5. Check that mail is working.

mail -v -s "TestSubject" youremail@gmail.com
Testing and
.

Output:
[<-] 220 mx.google.com ESMTP 16sm3004137ewy.7
[->] EHLO mysql
[<-] 250 PIPELINING
[->] STARTTLS
[<-] 220 2.0.0 Ready to start TLS
[->] EHLO servername
[<-] 250 PIPELINING
[->] AUTH LOGIN
[<-] 334 VXNlcm5hbWU6
[->] bWFyY3VzLm55YkBnbWFpbC5jb20=
[<-] 334 UGFzc3dvcmQ6
[<-] 235 2.7.0 Accepted
[->] MAIL FROM:
[<-] 250 2.1.0 OK 16sm3004137ewy.7
[->] RCPT TO:
[<-] 250 2.1.5 OK 16sm3004137ewy.7
[->] DATA
[<-] 354 Go ahead 16sm3004137ewy.7
[->] Received: by mysql (sSMTP sendmail emulation); Tue, 09 Mar 2010 13:11:41 +0100
[->] From: "Username"
[->] Date: Tue, 09 Mar 2010 13:11:41 +0100
[->] To: youremail@gmail.com
[->] Subject: TestSubject
[->]
[->] testing
[->] .
[<-] 250 2.0.0 OK 1268136703 16sm3004137ewy.7
[->] QUIT
[<-] 221 2.0.0 closing connection 16sm3004137ewy.7

6. Check the log file.

cat /var/log/maillog

Output:
SMTP[755]: Creating SSL connection to host
sSMTP[755]: SSL connection using RC4-MD5
sSMTP[755]: Sent mail for username@servername(221 2.0.0 closing connection 14sm3068161ewy.2) uid=0 username=username outbytes=696
sSMTP[1234]: Creating SSL connection to host
sSMTP[1234]: SSL connection using RC4-MD5
sSMTP[1234]: Sent mail for username@servername (221 2.0.0 closing connection 16sm3004137ewy.7) uid=0 username=username outbytes=349

Summary
This worked for me straight out of the box. I didn't need to make any changes to make it work. I hope it works for you as well!

Troubleshoooting device driver installation with setupapilog.txt

Today I tried to install the ”HP Universal Driver PCL6″ (32-bit) on a Windows XP machine with WMI and VB.NET. All I got was the errorcode 2 and a failed installation. What does that mean? Windows errorcodes is not my (anyones?) speciality…

After some googling I found this very good post that describes the problem and a possible solution.

The key to solving this puzzle and possibly other device installation problems is the file setupapi.log in the windows folder. After running my code again I got this in my setupapi.log file (in swedish):

[SetupAPI Log]
OS-version = 5.1.2600 Service Pack 3
Plattforms-ID = 2 (NT)
Service Pack = 3.0
Svit = 0x0100
Produkttyp = 1
Arkitektur = 2006157608
[2010/01/22 14:20:41 5392.4 Driver Install]
#-198 Bearbetad kommandorad: C:\WINNT\system32\wbem\wmiprvse.exe
#I060 Ange vald drivrutin.
#I060 Ange vald drivrutin.
[2010/01/22 14:20:41 5392.5]
#-198 Bearbetad kommandorad: C:\WINNT\system32\wbem\wmiprvse.exe
#-167 SPFILENOTIFY_NEEDMEDIA: Tagg = p6i2svww.cab, Beskrivning= PDL_LANG, Källsökväg = C:\CentralPrintArea\FKPrint\HP\Universal\32bit\HP Universal, Källfil = UNIDRV.HLP, Flaggor = 0x00000000.
#E169 SPFILENOTIFY_NEEDMEDIA: returnerade FILEOP_ABORT. Fel 2: Det går inte att hitta filen.
#W187 Installationen misslyckades. Försök att återställa originalfiler utförs.

It says that I got an errorcode 2 (missing file) and which file that is missing. In this case it is missing the file ”UNIDRV.HLP” that is not available in swedish. All I had to do is to extract this file from the cab-file ”p6i2svww.cab” to the root of the driverfolder. After doing this and running the program once more everything is working and the driver installs. After this I get the following output in setupapi.log.

[SetupAPI Log]
OS-version = 5.1.2600 Service Pack 3
Plattforms-ID = 2 (NT)
Service Pack = 3.0
Svit = 0x0100
Produkttyp = 1
Arkitektur = 2006157608
[2010/01/22 14:28:43 4784.4 Driver Install]
#-198 Bearbetad kommandorad: C:\WINNT\system32\wbem\wmiprvse.exe
#I060 Ange vald drivrutin.
#I060 Ange vald drivrutin.

That looks good I suppose! At least better then before. And the driver is installed ok!

You can read and download information about setupapilog.txt at the Microsoft website. If you read the whitepaper you could possibly solve many kinds of STRANGE device driver installation problems.

This is Microsofts description of setupapilog.txt

Windows XP and later versions log system operations more extensively than previous versions of Windows do. One of the most useful log files for debugging is the SetupAPI log file (setupapi.log). This plain-text file maintains the information that SetupAPI records about device installation, service-pack installation, and hotfix installation. Specifically, the file maintains a record of device and driver changes, as well as major system changes,

If you wnat more verbose logging to the setupapi.txt file you can edit the windows registry key ”HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\LogLevel”. If you raise this value to 255 you get a lot of logging which can be useful at times.

I hope this helps someone and that HP fixes the broken driver. It must be some sort of localization problem within this driver. Or maybe that I have the wrong driver…

The path to this file in Windows XP is %WINDIR%\Setupapi.log. On Windows Server 2008R2 the log files are found in %WINDIR%\Inf\ and are called setupapi.app and setupapi.dev.

There is always something new to learn in the Windows world! Happy troubleshooting!

How to create a printerqueu with .NET and WMI

This is an example of how you create a printerqueue with .NET and WMI (Windows Management Instrumentation).

A list of properties can be found at MSDN Win32_Printer

Other topics:
How to install printerdrivers with wmi and VB.NET
How to create TCP/IP printerports with .NET

Imports System.Management

Dim shared as Boolean = true

Try
 Dim mp As ManagementPath = New ManagementPath("Win32_Printer")
 Dim co As ConnectionOptions = New ConnectionOptions()
 co.EnablePrivileges = True
 co.Impersonation = ImpersonationLevel.Impersonate

 Dim ms As ManagementScope = New ManagementScope("\\" + Environment.MachineName + "\root\cimv2", co)

 Dim printerObject As ManagementObject = New ManagementClass(ms, mp, Nothing).CreateInstance()
 printerObject("PortName") = "IP_192.168.0.2"
 printerObject("DriverName") = "DriverName"
 printerObject("DeviceID") = "queuename"
 printerObject("Location") = "Placement of printer"
 printerObject("Comment") = "Some comments"

 If (shared) Then
  printerObject("Shared") = True
  printerObject("ShareName") = "Sharename"
  'printerObject("Published") = False ' Publish printer
 End If

 Dim options As PutOptions = New PutOptions()
 options.Type = PutType.UpdateOrCreate
 printerObject.Put(options)

Catch ex As Exception
 ' Do something
End Try