# Kubuntu und Easybox



## BabyMitSchnully (20. Mai 2008)

Hi Leute,

ich habe zu Hause eine Kubuntu Version mit dem Kernel 2.6.24
Ich habe schon mehr als nur einmal gegoogled. 
Die Easybox möchte einfach nicht. Habe es über mehrere Variationen probiert.
Mit Kppp kann ich die Easybox ansprechen. Scheint also richtig installiert zu sein. Wenn ich mich allerdings einwählen möchte mit Kppp, dann bekomme ich ein Connect kann aber noch nicht surfen. Nach ungefähr 30 Sekunden bekomme ich dann eine Fehlermeldung. (ppp kann nicht gestartet werden.) 
Wenn ich es dann noch einmal ein zweites mal versuche, dann bekomme ich den Fehler, dass CW: .... not allowed oder so ähnlich.

Habe es auch schon mit dem umtsmon versucht, aber den bekomme ich nicht mal installiert, weil immer irgendetwas fehlt. Jeder erzählt was anderes. Wie bekomme ich das ganze jetzt an laufen

Gruß
Chris


----------



## Sigbuzz (5. Juni 2008)

Bei mir läuft die easyBox unter OpenSuse10.3. Sollte auf einem Ubuntu ebenfalls gehen.
Für besseren Betrieb hab ich mir die Orginal Huawei Firmware auf die easybox geflasht (geht aber auch mit der VF firmware)
Es existieren unterschiedliche Anleitungen die nicht en. Aber auch welche die gehen. Hier mal meine Lösung.
Ich hab mir mal ein in einem Forum was gelesen. Hab aber die Adresse nicht mehr weil ich mir nen ebook aus der Seite erstellt habe. Hier der Inhalt:



```
Hi habe ein Problem mit meinem Upload unter openSUSE 10.3 hab vor ein paar
Tagen meinen Internet PC von WinXP auf Linux umgestellt und mein Upload is total
schlecht geworden. Kann mir einer helfen Bitte.
Nutze Moobicent (Vodafone.de) UMTS Flat (mit 350 dl und 140 up unter WinXP).
Nutze (smpppd wvdail und kinternet) zur Einwahl.
Hier das Verbindungsprotokoll von kinternet scheint alles ok zu sein.
SuSE Meta pppd (smpppd-ifcfg), Version 1.59 on server.
Status is: disconnected
trying to connect to smpppd
connect to smpppd
Status is: disconnected
Status is: connecting
pppd[0]: Plugin passwordfd.so loaded.
pppd[0]: --> WvDial: Internet dialer version 1.56 (abuild@balli)
pppd[0]: --> Initializing modem.
pppd[0]: --> Sending: ATZ
pppd[0]: ATZ
pppd[0]: OK
pppd[0]: --> Sending: AT Q0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
pppd[0]: AT Q0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
pppd[0]: OK
pppd[0]: --> Sending: AT+CGDCONT=1,"IP","web.vodafone.de";
pppd[0]: AT+CGDCONT=1,"IP","web.vodafone.de";
pppd[0]: OK
pppd[0]: --> Sending: ATM1
pppd[0]: ATM1
pppd[0]: OK
pppd[0]: --> Modem initialized.
pppd[0]: --> Sending: ATDT*99***16#
pppd[0]: --> Waiting for carrier.
pppd[0]: ATDT*99***16#
pppd[0]: CONNECT
pppd[0]: --> Carrier detected. Chatmode finished.
pppd[0]: Serial connection established.
pppd[0]: Renamed interface ppp0 to modem1
pppd[0]: Using interface modem1
Status is: connecting
pppd[0]: Connect: modem1 <--> /dev/ttyUSB0
pppd[0]: CHAP authentication succeeded
pppd[0]: CHAP authentication succeeded
pppd[0]: Could not determine remote IP address: defaulting to 10.64.64.64
pppd[0]: replacing old default route to eth1 [192.168.0.1]
pppd[0]: local IP address 90.186.98.217
pppd[0]: remote IP address 10.64.64.64
pppd[0]: primary DNS address 139.7.30.125
pppd[0]: secondary DNS address 139.7.30.126
```

und weiter:


```
pppd[0]: Script /etc/ppp/ip-up finished (pid 4177), status = 0x0
Status is: connected
So sieht meine config des Modems in Yast aus:
Huawei E220/E270: Mobiles Breitband mit Linux:
-am Beispiel von Vodafone.de openSUSE Linux mit Yast
zuerst PIN-Code der SIM-Karte deaktivieren (einfach in ein Handy stecken und PIN
übers
Menü deaktivieren)
• >Yast >Netzwerkgeräte >Modem
• >Hinzufügen
+ Modemgerät: /dev/ttyUSB0
+ Amtsholung: <leer>
+ Tonwahl
• Details
+ Baudrate:460800
+ Init1: ATZ
+ Init2: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
+ Init3: AT+CGDCONT=1,"IP","web.vodafone.de";
oder ohne Bildkompression
+ Init3: AT+CGDCONT=1,"IP","volume.d2gprs.de"
+Benutzergesteuert: angekreutzt
+Regulärer Ausdruck der Vorwahl zur Amtsholung:<leer>
• weiter
+Eigener Provider
+neu: Vodafone.de
Name für die Einwahl: provider2
Name des Providers: Vodafone.de
Telefonnummer:*99***16#
Berechtigung: vodafone oder :<leer>
Passwort: vodafone oder :<leer>
• weiter
+ Provider: Vodafone.de
+Dial-On-Demand: nicht angekreutzt
+Während Verbindung DNS ändern: angekreutzt
+DNS automatisch abrufen: angekreutzt
+Ignoranz-Modus:angekreutzt
+Externe Firewall-Schnittstelle:angekreutzt
+Idel Time-Out:0
+IP-Details: Dynamisch IP-Adress:angekreutzt
+Standardroute: angekreutzt
• Beenden
```

Hoffe das hilft. Vorher muss man die easybox aber noch in den richtigen Modus bringen: (Das ist der Inhalt der huaweiAktBbo.c)


```
/* HUAWEI E220 3G HSDPA modem - Aktivator modemu = aktivuje ttyUSB0 tty USB1 
   bobovsky 11.12.2006
   dalej sa uz pouzije usbserial a usb-storage
   cc huaweiAktBbo.c -lusb  (resp -I. -L.)
   armeb-linux-gcc huaweiAktBbo.c -L. -I. -lusb
*/
/* This file is generated with usbsnoop2libusb.pl from a usbsnoop log file. */
/* Latest version of the script should be in http://iki.fi/lindi/usb/usbsnoop2libusb.pl */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <signal.h>
#include <ctype.h>
#include <usb.h>
#if 0
 #include <linux/usbdevice_fs.h>
 #define LIBUSB_AUGMENT
 #include "libusb_augment.h"
#endif

struct usb_dev_handle *devh;

void release_usb_device(int dummy) {
    int ret;
    ret = usb_release_interface(devh, 0);
    if (!ret)
	printf("failed to release interface: %d\n", ret);
    usb_close(devh);
    if (!ret)
	printf("failed to close interface: %d\n", ret);
    exit(1);
}

void list_devices() {
    struct usb_bus *bus;
    for (bus = usb_get_busses(); bus; bus = bus->next) {
	struct usb_device *dev;
	
	for (dev = bus->devices; dev; dev = dev->next)
	    printf("0x%04x 0x%04x\n",
		   dev->descriptor.idVendor,
		   dev->descriptor.idProduct);
    }
}    

struct usb_device *find_device(int vendor, int product) {
    struct usb_bus *bus;
    
    for (bus = usb_get_busses(); bus; bus = bus->next) {
	struct usb_device *dev;
	
	for (dev = bus->devices; dev; dev = dev->next) {
	    if (dev->descriptor.idVendor == vendor
		&& dev->descriptor.idProduct == product)
		return dev;
	}
    }
    return NULL;
}

void print_bytes(char *bytes, int len) {
    int i;
    if (len > 0) {
	for (i=0; i<len; i++) {
	    printf("%02x ", (int)((unsigned char)bytes[i]));
	}
	printf("\"");
        for (i=0; i<len; i++) {
	    printf("%c", isprint(bytes[i]) ? bytes[i] : '.');
        }
        printf("\"");
    }
}


int main(int argc, char **argv) {
    int ret, vendor, product;
    struct usb_device *dev;
    char buf[65535], *endptr;
#if 0
    usb_urb *isourb;
    struct timeval isotv;
    char isobuf[32768];
#endif

    usb_init();
//    usb_set_debug(255);
    usb_find_busses();
    usb_find_devices();
/*
    if (argc!=3) {
	printf("usage: %s vendorID productID\n", argv[0]);
	printf("ID numbers of currently attached devices:\n");
	list_devices();
	exit(1);
    }
    vendor = strtol(argv[1], &endptr, 16);
    if (*endptr != '\0') {
	printf("invalid vendor id\n");
	exit(1);
    }
    product = strtol(argv[2], &endptr, 16);
    if (*endptr != '\0') {
	printf("invalid product id\n");
	exit(1);
    }
*/
    printf("Hladam HUAWEI E220 a prepnem na modem - bbo 06\n");
    vendor = 0x12d1;
    product = 0x1003;
    dev = find_device(vendor, product);
    assert(dev);

    devh = usb_open(dev);
    assert(devh);
    
    signal(SIGTERM, release_usb_device);

/*
    ret = usb_get_driver_np(devh, 0, buf, sizeof(buf));
    printf("usb_get_driver_np returned %d\n", ret);
    if (ret == 0) {
	printf("interface 0 already claimed by driver \"%s\", attempting to detach it\n", buf);
	ret = usb_detach_kernel_driver_np(devh, 0);
	printf("usb_detach_kernel_driver_np returned %d\n", ret);
    }
    ret = usb_claim_interface(devh, 0);
    if (ret != 0) {
	printf("claim failed with error %d\n", ret);
		exit(1);
    }
    
    ret = usb_set_altinterface(devh, 0);
    assert(ret >= 0);
*/
// BBO typ 1 = DEVICE
ret = usb_get_descriptor(devh, 0x0000001, 0x0000000, buf, 0x0000012);
//printf("1 get descriptor returned %d, bytes: ", ret);
//print_bytes(buf, ret);
//printf("\n");
usleep(1*1000);
// BBO typ 2 = CONFIGURATION
ret = usb_get_descriptor(devh, 0x0000002, 0x0000000, buf, 0x0000009);
//printf("2 get descriptor returned %d, bytes: ", ret);
//print_bytes(buf, ret);
//printf("\n");
usleep(1*1000);
// BBO typ 2 = CONFIGURATION
ret = usb_get_descriptor(devh, 0x0000002, 0x0000000, buf, 0x0000020);
//printf("3 get descriptor returned %d, bytes: ", ret);
//print_bytes(buf, ret);
//printf("\n");
usleep(1*1000);
/*
ret = usb_release_interface(devh, 0);
if (ret != 0) printf("failed to release interface before set_configuration: %d\n", ret);
ret = usb_set_configuration(devh, 0x0000001);
printf("4 set configuration returned %d\n", ret);
ret = usb_claim_interface(devh, 0);
if (ret != 0) printf("claim after set_configuration failed with error %d\n", ret);
ret = usb_set_altinterface(devh, 0);
printf("4 set alternate setting returned %d\n", ret);
usleep(50*1000);
ret = usb_set_altinterface(devh, 0);
printf("5 set alternate setting returned %d\n", ret);
usleep(62*1000);
*/
ret = usb_control_msg(devh, USB_TYPE_STANDARD + USB_RECIP_DEVICE, USB_REQ_SET_FEATURE, 00000001, 0, buf, 0, 1000);
printf("4 set feature request returned %d\n", ret);
/*
	ret = usb_release_interface(devh, 0);
	assert(ret == 0);
*/
	ret = usb_close(devh);
	assert(ret == 0);
	printf("Prepnute-OK, Mas ttyUSB0 ttyUSB1 (cez usbserial vendor=0x12d1 product=0x1003)\n");
	printf("pozri /proc/bus/usb/devices\n");
	code 0;
}
```

Kopieren und die Datei "huaweiAktBbo.c" nennen. Hier ein Auszug wie man das benutzt:


```
Again there is a command available to switch from flash to modem state:
http://www.kanoistika.sk/bobovsky/archiv/umts/huaweiAktBbo.c by Miroslav Bobovsky. (local copy
huaweiAktBbo.c)

Compile it with (you need libusb-dev installed)
 sudo apt-get install libusb-dev wget build-essential # possibly not necessary
 wget http://www.kanoistika.sk/bobovsky/archiv/umts/huaweiAktBbo.c
 cc huaweiAktBbo.c -lusb -o huaweiAktBbo
and install it to /sbin/huaweiAktBbo and call it with root privileges.
 sudo cp huaweiAktBbo /sbin/
```

Und natürlich aufrufen:


```
modprobe usbserial vendor=0x12d1 product=0x1003

When in modem state, the box offers three serial USB devices:
/dev/ttyUSB0, /dev/ttyUSB1, /dev/ttyUSB2
Use /dev/ttyUSB0 to examine modem settings using minicom or go online via PPP.
The default modem settings are (One, AT):
```



in der Konsole "huaweiAktBbo" eingeben um das Modul zu laden.
Das bringt die easybox in den richtigen Modus. Dann das obenstehende mit KInternet machen.

Ich hab ne ganze Reihe an versuchen unternommen die Box zum laufen zu bekommen. Jetzt gehts endlich. Ohne Probleme.... Das einzige was ich noch nicht geschafft habe ist
die Bildkomprimierung zu deaktivieren. Wenn das jemand geschafft hat: Ich möchte wissen wie.


----------

