Para fazer uma compilação cruzada para o Aquaris E4.5 em um host x86 Ubuntu, você precisa da toolchain androideabi do ARM. Você pode instalar isso com:
$ sudo apt install gcc-arm-linux-androideabi
O código-fonte do kernel do Linux para o Aquaris E4.5 pode ser encontrado na página do GitHub do BQ . Conforme documentado no arquivo README da BQ, você pode construir o kernel com:
$ ./makeMtk -t krillin n k
Para compilar cruzadamente os drivers do AX88179 (espero que o procedimento seja semelhante para outros drivers, mas eu não testei em nada além dos drivers do AX88179) Eu modifiquei os drivers ' Makefile
da seguinte forma:
export ARCH:=arm
export CROSS_COMPILE:=arm-linux-androideabi-
TARGET = ax88179_178a
OBJS = ax88179_178a.o
MDIR = drivers/net/usb
KDIR = <absolute-path>/aquaris/out/target/product/krillin/obj/KERNEL_OBJ
USBNET = $(shell find $(KDIR)/include/linux/usb/* -name usbnet.h)
EXTRA_CFLAGS = -DEXPORT_SYMTAB
PWD = $(shell pwd)
obj-m := $(TARGET).o
default:
make -C $(KDIR) SUBDIRS=$(PWD) modules
$(TARGET).o: $(OBJS)
$(LD) $(LD_RFLAG) -r -o $@ $(OBJS)
clean:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) clean
.PHONY: modules clean
-include $(KDIR)/Rules.make
Certifique-se de substituir o valor KDIR pelo seu caminho absoluto para KERNEL_OBJ
no diretório aquaris
.
Depois disso, você obtém o objeto de kernel cross-compilado, que você deve 1) transferir e 2) carregar no seu telefone (os seguintes comandos devem ser executados no telefone após o objeto do kernel ax88179_178a.ko
ser transferido):
# modprobe usbnet
# insmod ax88179_178a.ko
Et voilà! Ethernet OTG funcionou para mim.