Contenido

OpenWRT en Wifi Pineaple MARK VII

Instalación de OpenWRT

Desde este enlance podemos descargar el firmware OpenWRT luego accedemos a la piña por SSH:

1
2
3
4
5
# extraemos todos los paquetes instalados y guardamos el archivo:
opkg list-installed > installedPkgs

# con el firmware ya subido a la piña instalamos con el comando:
sysupgrade -n -p -v openwrt-23.05.0-ramips-mt76x8-hak5_wifi-pineapple-mk7-squashfs-sysupgrade.bin

Debemos esperar a que el firmware termine de instalarse los leds dejarán de parpadear y estarán de color verde.

Configuración

Una vez se instale el nuevo firmware el acceso es por la ip: http://192.168.1.1 desde la sección Network>Wireless solo veremos una interfaz que usaremos para conectar la piña a internet por wifi y descargar todos los paquetes que necesitamos como se muestra en las imagenes:

/hardware/openwrt/pine/images/img1.png
Figura 1: Login

/hardware/openwrt/pine/images/img2.png
Figura 2: Informacion de OpenWRT

/hardware/openwrt/pine/images/img3.png
Figura 3: Interfaces

Actualizamos la lista de paquetes desde la sección System>Software

Módulos

Nos conectamos por ssh e instalamos los siguientes paquetes:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
mmc-utils 
mii-tool
fdisk
block-mount 
e2fsprogs
parted
usbutils
libblkid
f2fs-tools
kmod-bluetooth
kmod-cfg80211
kmod-crypto-aead
kmod-crypto-cmac
kmod-crypto-crc32c
kmod-crypto-ecb
kmod-crypto-ecdh
kmod-crypto-hash
kmod-crypto-kpp
kmod-crypto-manager
kmod-crypto-null
kmod-crypto-pcompress
kmod-ebtables
kmod-fs-autofs4
kmod-fs-ext4
kmod-fs-ntfs
kmod-fs-vfat
kmod-fuse
kmod-gpio-button-hotplug
kmod-hid
kmod-i2c-core
kmod-i2c-mt7628
kmod-input-core
kmod-input-evdev
kmod-ip6tables
kmod-ipt-compat-xtables
kmod-ipt-conntrack
kmod-ipt-core
kmod-ipt-ipmark
kmod-ipt-ipopt
kmod-ipt-nat
kmod-ipt-offload
kmod-leds-gpio
kmod-lib-crc-ccitt
kmod-lib-crc16
kmod-libphy
kmod-mac80211
kmod-mii
kmod-mmc
kmod-mt76
kmod-mt76-core
kmod-mt76-usb
kmod-mt7601u
kmod-mt7603
kmod-mt76x02-common
kmod-mt76x02-usb
kmod-mt76x2
kmod-mt76x2-common
kmod-mt76x2u
kmod-nf-conntrack
kmod-nf-conntrack6
kmod-nf-flow
kmod-nf-ipt
kmod-nf-ipt6
kmod-nf-nat
kmod-nf-reject
kmod-nf-reject6
kmod-nls-base
kmod-nls-cp437
kmod-nls-iso8859-1
kmod-nls-utf8
kmod-ppp
kmod-pppoe
kmod-pppox
kmod-regmap-core
kmod-scsi-core
kmod-sdhci
kmod-sdhci-mt7620
kmod-slhc
kmod-usb-acm
kmod-usb-core
kmod-usb-ehci
kmod-usb-net
kmod-usb-net-asix
kmod-usb-net-asix-ax88179
kmod-usb-net-rtl8152
kmod-usb-ohci
kmod-usb-storage
kmod-usb2

Es posible que algunos paquetes no se instalen o que ya estén presentes esto no es un problema y pueden ignorarse. Finalmente reiniciamos la piña (muy importante) y despues en la sección Network>Wireless podremos ver todas las interfaces que tiene la piña:

/hardware/openwrt/pine/images/img4.png
Figura 4: Todas las interfaces wifi

Cambiar partición root

Debemos identificar una particion de 1.84 Gb en este caso es /dev/mmcblk0 como se muestra en la imagen para esto podemos usar el comando fdisk -l:

/hardware/openwrt/pine/images/img5.png
Figura 5: Particion /dev/mmcblk0

Ahora debemos ejecutar los siguientes comandos que fueron extraidos de la documentación de OpenWRT y es para usar la memoria interna de 2Gb, solo tenemos que ejecutarlo desde un script no es necesario cambiar nada:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
DEVICE="/dev/mmcblk0p1" # reemplazamos par la particion encontrada con fdisk -l
mkfs.ext4 -L extroot ${DEVICE}
eval $(block info ${DEVICE} | grep -o -e 'UUID="\S*"')
eval $(block info | grep -o -e 'MOUNT="\S*/overlay"')
uci -q delete fstab.extroot
uci set fstab.extroot="mount"
uci set fstab.extroot.uuid="${UUID}"
uci set fstab.extroot.target="${MOUNT}"
uci commit fstab
ORIG="$(block info | sed -n -e '/MOUNT="\S*\/overlay"/s/:\s.*$//p')"
uci -q delete fstab.rwm
uci set fstab.rwm="mount"
uci set fstab.rwm.device="${ORIG}"
uci set fstab.rwm.target="/rwm"
uci commit fstab
mount ${DEVICE} /mnt
tar -C ${MOUNT} -cvf - . | tar -C /mnt -xf -

Finalmente reiniciamos la piña. En la sección System>Software podremos ver que tenemos más espacio de almacenamiento.

/hardware/openwrt/pine/images/img6.png
Figura 6: Espacio de almacenamiento de la piña

Agregar un archivo Swap

Para tener un mejor rendimiento podemos crear un archivo que se usará como Swap de 250mb:

1
2
3
4
5
6
7
8
DIR="$(uci -q get fstab.extroot.target)"
dd if=/dev/zero of=${DIR}/swap bs=1M count=250
mkswap ${DIR}/swap
uci -q delete fstab.swap
uci set fstab.swap="swap"
uci set fstab.swap.device="${DIR}/swap"
uci commit fstab
service fstab boot

Verificamos el estado del archivo swap:

1
cat /proc/swaps

instalando herramientas adicionales

Actualizamos todo el sistema:

1
opkg upgrade $(opkg list-upgradable  | cut -d " " -f 1)

La siguiente lista son los paquetes que vienen en el firmware original, estos pueden instalarse en conjunto algunos ya estan o tienen versiones más reciente en el firmware de OpenWRT:

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
aircrack-ng
airmon-ng
at
autossh
base-files
bash
block-mount
blockd
busybox
ca-bundle
ca-certificates
cc-client
coreutils
coreutils-base64
coreutils-sleep
curl
dbus
dnsmasq
e2fsprogs
ebtables
ethtool
file
firewall
fstools
fwtool
getrandom
glib2
hcxtools
hostapd-common
hostapd-utils
ip6tables
iptables
iptables-mod-ipmark
iptables-mod-ipopt
iw
iwinfo
jshn
jsonfilter
kernel
libatomic1
libattr
libblkid1
libblobmsg-json20210516
libbz2-1.0
libc
libcbor0
libcomerr0
libcurl4
libdbus
libelf1
libevdev
libexpat
libext2fs2
libffi
libfido2-1
libgcc1
libgmp10
libgnutls
libical
libip4tc2
libip6tc2
libiwinfo-data
libiwinfo20210430
libjson-c5
libjson-script20210516
liblzma
libmagic
libmbedtls12
libncurses6
libnettle8
libnghttp2-14
libnl-core200
libnl-genl200
libnl-tiny1
libopenssl-conf
libopenssl1.1
libpcap1
libpcre
libpthread
libpython3-3.9
libreadline8
librt
libsqlite3-0
libss2
libstdcpp6
libubox20210516
libubus20210630
libuci20130104
libuclient20201210
libudev-zero
libusb-1.0-0
libustream-openssl20201210
libuuid1
libwifi
libxtables12
logd
macchanger
mk7led
msmtp
mt7601u-firmware
mtd
nano
netifd
ntfs-3g
odhcp6c
odhcpd-ipv6only
openssh-client
openssh-client-utils
openssh-keygen
openssh-server
openssh-sftp-server
openssl-util
openwrt-keyring
opkg
pineap
pineapple-ouis
pineutil
ppp
ppp-mod-pppoe
procd
procps-ng
procps-ng-free
procps-ng-kill
procps-ng-pgrep
procps-ng-pkill
procps-ng-ps
procps-ng-snice
procps-ng-top
procps-ng-uptime
procps-ng-watch
protobuf-lite
python3-base
python3-codecs
python3-email
python3-light
python3-logging
python3-openssl
python3-urllib
resetssids
sniffer
swconfig
tcpdump
terminfo
ubox
ubus
ubusd
uci
uclibcxx
uclient-fetch
urandom-seed
urngd
usbids
usbutils
usign
vim
wireless-regdb
wireless-tools
wpad
zlib

Es posible que algunos paquetes no se instalen esto no es un problema y pueden ignorarse.

Energia USB

Es posible que algunos dispositivos USB no sean detectados esto es por que la energia del puerto USB está desactivada para activarla:

1
echo 1 > /sys/class/gpio/usb-power/value

Y con esto la piña wifi esta con la última versión de OpenWRT.