I use this tutorial to setup RemoSIM.com product for customers.
Download Ubuntu 20.04 LTS for Raspberry PI and burn the image to your microsd card.
I use this tutorial to setup RemoSIM.com product for customers.
Proxmox 6.x does not enter installation on RH2288 V3 servers for some reason and it drops to shell with this error:
No working lease in persistent database
Digger412 has suggested a workaround here .
Enter E key on proxmox splash page then add the following arguments :
modprobe.blacklist=nouveau amd_iommu=on video=efifb:off
p.s.
You can get internet access in proxmox debug shell by assigning your IP / Gateway to the interface on the fly:
ip addr show
ip addr add YOUR.IP.ADDRESS/PREFIX dev enp2s0f0
ip route add default via YOUR.GATEWAY.ADDRESS dev enp2s0f0
I installed FreePBX Sangoma OS on VirtualBox and tried to install Guest Additions there:
VirtualBox -> Devices -> Insert Guest Additions CD image...
the on the VM:
yum install dkms gcc kernel-devel kernel-headers -y
mkdir /media/cdrom
mount /dev/cdrom /media/cdrom
cd /media/cdrom
./VBoxLinuxAdditions.run
it returns the following error while kernel headers are already installed:
VirtualBox Guest Additions: Kernel headers not found for target kernel 3.10.0-1127.19.1.el7.x86_64.
This is while we have already installed kernel-devel and kernel-headers packages. This error is because the build folder in /lib/modules/$(uname -r) is missing in the default FreePBX Sangoma installation for some reason.
To fix this problem, run the following command:
ln -s /usr/src/kernels/$(uname -r) /lib/modules/$(uname -r)/build
then run
./VBoxLinuxAdditions.run
again to build Linux Guest Additions.
Get the latest version number from here and update v variable in the following gist:
v=4.1.1
apt-get install g++ autoconf automake libtool pkg-config libpng-dev libjpeg62-turbo-dev libtiff5-dev zlib1g-dev libleptonica-dev -y
cd /usr/src
wget https://github.com/tesseract-ocr/tesseract/archive/$v.tar.gz
tar -zxvf $v.tar.gz
cd tesseract-$v
./autogen.sh
./configure --prefix=/usr/local
make
make install
wget https://github.com/tesseract-ocr/tessdata/raw/master/eng.traineddata -O /usr/local/share/tessdata/eng.traineddata
I managed to run 4 GSM donlges on RaspberryPi 4B+ in a stable production eventually although it was not an easy process. I had four UMG1691 GSM dongles that I wanted to use with raspberry-asterisk.
-------
Update 4: 19/June/2021:
I noticed intermittent disconnects in the dongles, it was apparently due to weak 3g signal. I suppose the operator stopped one of the antennas it had in our region which caused the weak signal problem. (RSSI <15)
I had to switch the dongles to 2G (AT^SYSCFG=13,1,3FFFFFFF,0,2) to get a better signal however dongles keep resetting frequently and it was very unstable. I had DUB H7 D-Link hub which is recommended here however I was not able to get dongles working in 2G mode with this hub.
I ordered a TP-Link UH700 USB 3.0 hub and the dongles are now working in 2G mode and they are very stable (RSSI > 23). This USB hub uses VL812 chip which I think is the reason why its compatible with 2G dongles (needs to be verified). There are some other hubs with this chipset which can be tested to confirm this.
Update 3: 26/April/2021:
The four sim cards in the dongles were from 3 different network operators. I noticed that the simcards from one of the network operators do not work stably and they reset frequently. I was getting
ID Group State RSSI Mode Submode
dongle2 0 GSM not re 20 5 4
I was getting Mode 5 Submode 4 on the dongle having the sim card. This was resolved by transferring the phone number to another network operator. Now asterisk shows a Mode 0 Submode 0 like the rest of the dongles and it is all stable.
ID Group State RSSI Mode Submode
dongle2 0 Free 25 0 0
Update 2: 2/March/2021:
Although my setup from Update 1 was stable, the gsm dongles used to reset / disconnect every 10-60mins randomly, I had the following errors in dmesg:
[14176.370665] usb 1-1.3.4-port4: Cannot enable. Maybe the USB cable is bad?
[14176.370984] hub 1-1.3:1.0: hub_ext_port_status failed (err = -110)
[14177.410797] usb 1-1.3.4-port4: cannot disable (err = -110)
[14054.689390] usb 1-1.3.4-port1: cannot reset (err = -110)
and even sometimes lsusb didnt show dongles after the above errors and a restart was required.
I decided to try Ubuntu 20.04LTS for Raspberry PI + Asterisk 18 and it worked decently without even a single dongle disconnect / restart in 24 hours. I have published the instructions to install freepbx/asterisk 18/ ubuntu 20.04 LTS on Raspberry PI in my post here.
UPDATE 1: 23/Dec/2020:
The UMG1691 modems were not stable at all for production due to RF problems in 2G.
I eventually dropped all these modems and went for four new 3G modems: E1550, E153, E173 and E171
They work pretty well with D-Link DUB-H7 port when set to 3G only mode :
^SYSCFG:14,2,3FFFFFFF,0,2
It is finally Stable :
-------
First, RaspberryPI 4B+ allows a Maximum total USB peripheral current draw of 1.2A. This is not enough if you are going to use four GSM dongles in which each dongle uses 0.5A, you would need a total USB current draw of 2A.
One might think to use a powered USB hub. I tried this Orico USB3 hub and this D-Link USB2 Hub however they did not work. There are some reports that GSM dongles might have problems with USB hubs and using 3G mode might fix it. In my experience, the GSM dongles got reset frequently and the OS reported errors like:
usb 1-1-port2: cannot reset (err = -110)
Second, the 4 USB ports on RaspberryPi are designed so close to each other that it makes it impossible to connect 4 dongles directly to the raspberry. You would need a USB cable extension. Casual USB2.0 extension cables won't work and it leads to
usb 1-1-port2: Cannot enable. Maybe the USB cable is bad?
errors in dmesg. You would need to use USB3.0 extension cables even for usb2 ports to connect your dongles.
Third, after connecting all GSM dongles to the raspberry, you may get
usb usb2-port1: over-current change #1
error in dmesg. I tried three things here :
- Add max_usb_current=1 to /boot/config.txt
- Use minicom or atinout to directly send AT commands to your GSM dongles and set SYSCFG on all your dongles to 2G only which uses less power than 3G
- Use a 5V 3A USB adapter on your raspberry and check that your raspberry is not undervoltaged :
/opt/vc/bin/vcgencmd get_throttled
and also check dmesg to ensure that the usb ports did not get overcurrent:
dmesg | grep -i curr
so my setup is now stable with the above precautions and everything seems to work fine, it took me 3 weeks for to figure out all the above
- Disable wifi and bluetooth modules if you don't need them, add dtoverlay=disable-wifi and dtoverlay=disable-bt to /boot/config.txt
and finally reboot raspberry for the changes to apply.
- I had this problem that dongles stopped receiving SMS after some time. Whenever I inserted the sim card on a mobile phone, text messages were received fine. This problem is described here and the solution is to add a cronjob in your raspberry pi to delete SMS storage of the sim card / dongle periodically.
Install munin first:
yum install epel-release -y
yum install munin munin-cgi munin-node munin-apache munin-common munin-plugins-ruby -y
Check the services that munin has installed in systemd:
systemctl list-unit-files | grep -i munin
Enable all available munin plugins:
munin-node-configure --shell --families=contrib,auto | sh -x
Start and enable munin-node which collects data on the system, we restrict this service to localhost:
sed -i /etc/munin/munin-node.conf -e "s,^host \*,#host \*,g"
sed -i /etc/munin/munin-node.conf -e "s,^#host 127.0.0.1,host 127.0.0.1,g"
systemctl enable munin-node --now
Enable munin in systemd timer:
sed -i /etc/munin/munin.conf -e "s,#graph_strategy cron,graph_strategy cron,g"
sed -i /etc/munin/munin.conf -e "s,#html_strategy cron,html_strategy cron,g"
sed -i /etc/munin/munin.conf -e "s,#htmldir,htmldir,g"
systemctl enable munin.timer --now
check if munin timer is running properly
systemctl list-timers --all
and finally add a virtualhost to apache or nginx to show the graphs. Check the examples here (Periodically generate graphs and HTML pages).
For apache:
<VirtualHost _IP_:80>
ServerName _IP_
DocumentRoot /var/www/html
Alias /munin/static/ /etc/munin/static/
<Directory /etc/munin/static>
Require all granted
</Directory>
# Disabling caching
RewriteEngine On
<FilesMatch "\.(html|htm|jpg|png)$">
FileETag None
<IfModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 12 Jan 1980 05:00:00 GMT"
</IfModule>
</FilesMatch>
# Password protect the folder
<Directory /var/www/html>
AuthType Basic
AuthName "restricted area"
AuthUserFile /var/www/.htpasswd
require valid-user
</Directory>
ScriptAlias /munin-cgi/munin-cgi-graph /var/www/html/munin/cgi/munin-cgi-graph
# ScriptAlias /munin /var/www/html/munin/cgi/munin-cgi-html
<Directory /var/www/html/munin/cgi>
Require valid-user
AuthName "restricted area"
AuthUserFile /var/www/.htpasswd
<IfModule mod_fcgid.c>
SetHandler fcgid-script
</IfModule>
<IfModule !mod_fcgid.c>
SetHandler cgi-script
</IfModule>
</Directory>
CustomLog /var/log/httpd/munin-access.log combined
ErrorLog /var/log/httpd/munin-error.log
</VirtualHost>
Create your .htpasswd file :
htpasswd -c /var/www/.htpasswd monit
for nginx add the following to your monit vhost:
location = / {
rewrite ^/$ munin/ redirect; break;
}
location /munin/static/ {
alias /etc/munin/static/;
expires modified +1w;
}
location /munin/ {
auth_basic "Restricted";
auth_basic_user_file /var/www/.htpasswd;
alias /var/www/html/munin/;
expires modified +310s;
}
location ^~ /munin-cgi/munin-cgi-graph/ {
auth_basic "Restricted";
auth_basic_user_file /var/www/.htpasswd;
access_log off;
fastcgi_split_path_info ^(/munin-cgi/munin-cgi-graph)(.*);
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass unix:/var/run/munin/munin-cgi-graph.sock;
include fastcgi_params;
}
then run
service nginx reload
systemctl enable munin-cgi-graph.socket --now
BigBlueButton only supports Ubuntu distros however it is possible to install it on almost any linux distro using docker. Here is the instruction I use to install it on Centos 8 :
I had a Hikvision IPC-B120 that provides a simple RTSP stream, which I could view in VLC. I also wanted to see my Logitech BRIO’s feed in a ...