středa 30. prosince 2009

Install Fedora 12 on Dell Latitude D630 - wifi

Update: see update for Fedora 15

After short struggling wifi is now working well. I have used ndiswrapper and Dell driver (use service tag to find it). For me it was ftp://ftp.us.dell.com/network/R242906.exe. Open the downloaded file using file-roller (archive manager) and extract bcmwl4.inf and bcmwl5.sys.
After installing ndiswrapper packages following commands installed the card:

ndiswrapper -i bcmwl5.inf
ndiswrapper -m
ndiswrapper -l


The last command shall say something similar to:
bcmwl5 : driver installed
device (14E4:4328) present (alternate driver: ssb)


Now add line ndiswrapper to /etc/modules and a line
blacklist ssb
into /etc/modprobe.d/blacklist.conf.

Try modprobe ndiswrapper now and see whether NetworkManager will detect wifi networks in the range .

pondělí 28. prosince 2009

running Bluez 4.x without GUI

Recently I have tried to run bluetooth on my Fedora12 installation. It seems bluetooth works fine only if GUI is used. BlueZ (Linux bluetooth stack implementation) heavily relies on DBUS. Unfortunately there is no support for pairing devices (PIN entry) when no GUI is available. Every post on the internet regarding non GUI bluetooth setup is just useless as it references pre 4.x bluez setup. Bluez seems to have changed a lot in 4.x versions. There is almost no documentation.

The recommended way was to use the default passkey-agent. But it seems not to work anymore.

Finaly I was able to pair may device using sample agent found in bluez sources test/simple-agent which is configurable. I have modified the source slightly to pair using constant PIN. When started the code bellow will respond with constant PIN to every pairing request. The constant PIN is 1243.

Usage: store the following code into a file. Change attributes of the file to be runnable (chmod a+x filename). Then run the script. Then you will be able to pair devices using the default PIN 1243.

#!/usr/bin/python

import gobject

import sys
import dbus
import dbus.service
import dbus.mainloop.glib

class Rejected(dbus.DBusException):
_dbus_error_name = "org.bluez.Error.Rejected"

class Agent(dbus.service.Object):
exit_on_release = True

def set_exit_on_release(self, exit_on_release):
self.exit_on_release = exit_on_release

@dbus.service.method("org.bluez.Agent",
in_signature="", out_signature="")
def Release(self):
print "Release"
if self.exit_on_release:
mainloop.quit()

@dbus.service.method("org.bluez.Agent",
in_signature="os", out_signature="")
def Authorize(self, device, uuid):
print "Authorize"
return

@dbus.service.method("org.bluez.Agent",
in_signature="o", out_signature="s")
def RequestPinCode(self, device):
print "RequestPinCode"
return "1243"

@dbus.service.method("org.bluez.Agent",
in_signature="o", out_signature="u")
def RequestPasskey(self, device):
print "RequestPasskey"
return dbus.UInt32("1243")

@dbus.service.method("org.bluez.Agent",
in_signature="ou", out_signature="")
def DisplayPasskey(self, device, passkey):
print "DisplayPasskey"
return

@dbus.service.method("org.bluez.Agent",
in_signature="ou", out_signature="")
def RequestConfirmation(self, device, passkey):
print "RequestConfirmation"
return

@dbus.service.method("org.bluez.Agent",
in_signature="s", out_signature="")
def ConfirmModeChange(self, mode):
print "ConfirmModeChange (%s)" % (mode)

@dbus.service.method("org.bluez.Agent",
in_signature="", out_signature="")
def Cancel(self):
print "Cancel"

def create_device_reply(device):
print "New device (%s)" % (device)
mainloop.quit()

def create_device_error(error):
print "Creating device failed: %s" % (error)
mainloop.quit()

if __name__ == '__main__':
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
print "Step 1"

bus = dbus.SystemBus()
print "System bus acquired"

manager = dbus.Interface(bus.get_object("org.bluez", "/"),
"org.bluez.Manager")
print "manager acquired"

path = manager.DefaultAdapter()
print "Manager path acquired"

adapter = dbus.Interface(bus.get_object("org.bluez", path),
"org.bluez.Adapter")
print "adapter acquired"

path = "/my/agent"
agent = Agent(bus, path)
print "Agent object created"

mainloop = gobject.MainLoop()
print "Main loop created"

adapter.RegisterAgent(path, "NoInputNoOutput")
print "Agent registered"

print "Starting loop"
mainloop.run()

#adapter.UnregisterAgent(path)
#print "Agent unregistered"

pondělí 21. prosince 2009

... boot from USB with non USB BIOS

Willing to boot an old computer with no BIOS support for USB boot and the only media you have is a flash thumb drive. If it happens and you face such problem take a look at PLoP.

You can install the boot loader in many different ways. My case: Windows were installed on the target PC. I installed bootloader using plpgenbtldr-0.7.zip according to its readme. Rebooted .... and ... computer is booting using USB flash.

středa 16. prosince 2009

Problém s ASUS 500g Premium

Dlouhou dobu využívám ASUS 500g Premium. Včera přestal fungovat. Seděl si u okna a z ničeho nic přestal reagovat. Zdálo se, že se z něj stala nepotřebná cihlička (brick). Všechny kontrolky všech síťových portů svítily, WAN a POWER kontrolka byly zhasnuté, krabička nereagovala. Mrtvo.

Začal jsem zkoušet, dokonce jsem se uchýlil k "PIN 9" triku, kterým se má zařízení zresetovat do továrního nastavení. Nic nepomohlo. Hledal jsem a hledal až jsem našel informaci o problémech se zdrojem, které se měly projevovat stejně jako ty mé.

A problém byl vyřešen. Mezi mnoha zdroji, které se mi doma potulují jsem objevil jeden, který vyhovoval jak elektricky (5V/2.5A), tak konektorem a huráááá.

Moje oblíbená krabička se rozeběhla. Následkem předchozích pokusů sice zcela vymazaná, ale zato teď běží se zbrusu novou verzi systému OpenWRT Kamikaze 8.09.2, která mimo jiné zřejmě vyřešila problematickou kvalitu signálu adoptované Atheros WiFi karty.

středa 2. prosince 2009

... italské minuty

Po příletu došlo k zásadnímu odhalení. Bylo mi vyjeveno, proč se prasečí chřipka jmenuje prasečí. Na Milánském letišti při čekání na zavazadlo se ukázalo, ze v ochranu před touto zákeřnou o to více však neškodnou nemocí lidé berou respirátory, které jim dávají vzhled čuněte s rypákem.

V zápětí, lehce rozčilen přeháněním hrozby chřipkou, mě italský taxi řidič vyškolil v oboru úcty k životu a zdraví, když mi názorně ukázal, jak značky omezující rychlost přeměnit ve zbytečné dekorace, jak nakouknout do kufru auta vpředu jedoucího a na závěr mistrovské dílo v několika reprízách s názvem: "Plná čára není zeď. A to ani tehdy, kdy za zatáčku fakt není vidět".

Dnes večer itálie vytála žolíka v podobě večeře ještě bohatší, než lze vyjádřit slovem opulentní:

  • pršut se zeleninou

  • brokolicový závin

  • "sekaná" s dušenou kapustou

  • zelenina smažená v těstíčku

  • polenta se sýrovou pěnou

  • taštičky s dýňovou náplní

  • rizoto

  • panenka pečená v listovém těstě

  • zákusky 3 druhů (čokoládový řez, banánový řez, kávové cosi)

  • espresso

  • a k tomu všemu dobré vínko



Uffff .. jdu trávit