#!/bin/sh ############################################################################################################################################################ # HotPi Pro - Mobile Hotspot & Media Server ############################################################################################################################################################ # Package Management apt update && apt upgrade -y apt install bridge-utils dnsmasq hostapd ifupdown iptables libqmi-utils resolvconf samba udhcpc udiskie udisks2 -y apt purge dhcpcd modemmanager -y ############################################################################################################################################################ # Script Proofing sed -i /^allow-hotplug\ br0$/,+3d /etc/network/interfaces sed -i /^interface=br0$/,+1d /etc/dnsmasq.conf sed -i /^net.ipv4.ip_forward=1$/d /etc/sysctl.conf sed -i -e /^\\[homes]$/,+21s/^/#/ -e /^\\[print$]$/,+5s/^/#/ -e /^\\[HotPi\ SMB]$/,+3d /etc/samba/smb.conf sed -i /^usb_max_current_enable=1$/d /boot/firmware/config.txt ############################################################################################################################################################ # User Commands # Start Internet Connection echo '#!/bin/sh sudo qmicli -d /dev/cdc-wdm0 --wds-noop --client-cid=17 2> /dev/null sudo qmicli -d /dev/cdc-wdm0 -E raw-ip sudo qmicli -d /dev/cdc-wdm0 --wds-start-network=ip-type=4 --client-no-release-cid sudo udhcpc -i wwan0' > /bin/hotpistart # Stop Internet Connection echo '#!/bin/sh sudo ifconfig wwan0 down sudo qmicli -d /dev/cdc-wdm0 --wds-noop --client-cid=17 2> /dev/null' > /bin/hotpistop # List USB Storage echo '#!/bin/sh lsblk -o name,size,type,mountpoint | sed /mmcblk0/d' > /bin/hotpilist # Mount USB Storage echo '#!/bin/sh sudo udisksctl mount -b /dev/$1' > /bin/hotpimount # Unmount USB Storage echo '#!/bin/sh sudo udisksctl unmount -b /dev/$1' > /bin/hotpiunmount # Read-Only SMB Share echo '#!/bin/sh sudo chmod -R 755 /media/root' > /bin/hotpiread # Writeable SMB Share echo '#!/bin/sh sudo chmod -R 777 /media/root' > /bin/hotpiwrite # Update Raspberry Pi echo '#!/bin/sh sudo apt update && sudo apt upgrade -y' > /bin/hotpiupdate ############################################################################################################################################################ # Network Settings # Network Bridge # Gateway Node echo 'allow-hotplug br0 iface br0 inet static address 192.168.0.1 bridge_ports wlan0 eth0' >> /etc/network/interfaces # DHCP Server echo 'interface=br0 dhcp-range=192.168.0.2,192.168.0.254,24h' >> /etc/dnsmasq.conf # Packet Forwarding echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf # Wi-Fi Network echo 'bridge=br0 channel=1 country_code=US hw_mode=g ieee80211n=1 interface=wlan0 rsn_pairwise=CCMP ssid=raspberrypi wmm_enabled=1 wpa=2 wpa_key_mgmt=WPA-PSK wpa_passphrase=password' > /etc/hostapd/hostapd.conf # Network-Attached Storage # SMB File Server echo '[HotPi SMB] path = /media/root public = yes writeable = yes' >> /etc/samba/smb.conf ############################################################################################################################################################ # Power Settings # USB Ports echo 'usb_max_current_enable=1' >> /boot/firmware/config.txt ############################################################################################################################################################ # Automation # Internet Connection echo 'ATTR{idVendor}=="1e0e", ATTR{idProduct}=="9001", RUN="/bin/systemd-run hotpistart"' > /etc/udev/rules.d/hotpiauto.rules # Packet Filtering & USB Storage Mounting echo '[Service] ExecStart=sh -c "iptables -t nat -A POSTROUTING -o wwan0 -j MASQUERADE ; udiskie -N -F" [Install] WantedBy=multi-user.target' > /etc/systemd/system/hotpiauto.service ############################################################################################################################################################ # Execution mkdir -p /media/root chmod 755 /bin/hotpi* /media/root systemctl unmask hostapd systemctl enable hostapd hotpiauto resolvconf reboot ############################################################################################################################################################