qrcp: A Command Line Tool to Transfer Files over Wi-Fi using QR Codes

 

I am an iPhone user, and my daily driver is Linux. I am always taking pictures with my phone but how do I get them easily transferred to my computer? I found the answer a few years ago when I discovered ‘qrcp’.

Qrcp is a command-line tool that allows you to transfer files over Wi-Fi using QR codes. It is a simple and efficient way to transfer files between devices, without the need for any third-party apps or services.

Claudio d’Angelis, the developer, has introduced the qrcp software under the MIT license. The application can be accessed on GitHub and boasts simplicity in both installation and usage. Compatible with Linux, Windows, and macOS, it offers download options in RPM, DEB, and tarball. Remarkably, there are builds tailored for a wide array of platforms, encompassing even the Raspberry Pi

The project maintains a downloads page where you can choose the appropriate package for your platform. Once that is accomplished, you can easily install the software with your package manager.

$ sudo dnf install ./qrcp*rpm

or

sudo apt install ./qrcp.*deb

Once the software is installed you need to configure it for your computer. If you are running a firewall you can configure ‘qrcp’ to use a particular port and make an exception rule on youir firewall.

$ qrcp config

To begin, initiate the configuration file creation process. Employ the qrcp config command for guidance, though it involves a few intricate inquiries. The first is what interface your computer is going to use, whether wireless, wired, etc. One of the queries is an option to choose a port. I chose port ‘8080’ but you can choose whatever makes sense to you. There is an option to choose a fully qualified domain name. In my case, I left it blank. You can specify a ‘url path’ or leave it blank. You can choose a default directory where the file will be received. Leave it blank, and the file will be placed in your ‘home’ directory.

Once the configuration is complete, you can use ‘qrcp’ to receive or send files from your mobile phone.

$ qrcp receive

The software generates a QR code similar to what is pictured above. Point your iPhone camera at the QR code, and your phone will recognize the QR code and initiate the transfer.

Successful transfers provide feedback on your phone specifying the file name and location where it has been transferred.

You can choose the picture from your photo library and easily send the file or text from your iPhone to your computer using your wireless network.

WoeUSB-ng to the rescue

Frequently, I’m approached by individuals seeking assistance in rescuing Windows computers that have encountered locking or damage issues. I occasionally utilize a Linux USB boot drive to access Windows partitions effectively. This enables me to transfer and safeguard files from these compromised systems securely.

Sometimes, clients misplace their passwords or lock themselves out of their login accounts. One viable method to restore account access involves generating a Windows boot disk to initiate repairs on the computer. Microsoft provides the option to obtain Windows copies via its official website and tools designed for crafting a USB boot device. However, utilizing these tools necessitates access to a Windows computer, posing a challenge for me as a Linux user. Consequently, I’ve sought alternative approaches for creating a bootable DVD or USB drive. My go-to tools, such as Etcher.io, Popsicle (for Pop!_OS), UNetbootin, and even utilizing the command line utility ‘dd’ for crafting bootable media, have yielded limited success. Since my daily driver is Linux, it was near impossible to create a USB drive with a bootable Windows version.

A few years ago, I learned about WoeUSB and the subsequent project WoeUSB-ng. WoeUSB-ng is a software utility used for creating bootable Windows USB drives using Windows ISO images and effectively transferring them onto a USB drive, making it possible to install or repair Windows operating systems from that USB drive. On Linux systems, the WoeUSB-ng software package. The “ng” in its name stands for “next generation,” indicating that it’s a successor or evolution of the original WoeUSB tool. I have used it to create bootable Windows drives with both Windows 10 and Windows 11. WoeUSB-ng is open source with a GPL v3 license.

The project website lists several install options for Linux users.

Fedora users can use the following commands to install the software necessary to support WoeUSB-ng.

sudo dnf install git p7zip p7zip-plugins python3-pip python3-wxpython4

Ubuntu/Linux Mint users can use the following commands to install the software necessary to support WoeUSB-ng.

sudo apt install git p7zip-full python3-pip python3-wxgtk4.0 grub2-common grub-pc-bin parted dosfstools ntfs-3g

Then issue the following commands to install WoeUSB-ng on your system.

git clone https://github.com/WoeUSB/WoeUSB-ng.git
cd WoeUSB-ng
sudo pip3 install .

Once the software is installed, creating a bootable Windows drive is very straightforward.

Click install, and depending on the processor and RAM in your machine, you should have a bootable Windows 10 or Windows 11 drive in very little time. This article is adapted from Use this bootable USB drive on Linux.

Crafting a Universal Linux Live USB Drive

I frequently create USB boot devices for Linux to troubleshoot ailing Windows computers. I also use these drives to introduce new users to the beauty and utility of using Linux as their primary operating system. If you are a Fedora user, you can easily create bootable media using the Fedora Media Writer. It is usually included by default with Fedora, but if not, you can easily create your media by installing the software on your computer with the following command.

sudo dnf install liveusb-creator

Pop!_OS users can use Popsicle. Popsicle, an open-source application designed for Linux, empowers users to securely and effortlessly write images onto USB drives. This software comes pre-installed in Pop!_OS versions 18.04 and newer. Popsicle has an MIT license.

Linux Mint users have Mintstick which is part of the default install of LinuxMint Cinnamon 21.2. Like Popsicle it can be used to create live USB drives from any Linux ISO you can download. It is open source with a GPL v2 license.

Ubuntu users have a similar tool designed to create bootable USB drives for Ubuntu. The Fedora and Ubuntu tools are great to make bootable media for those distributions. But what if you create a bootable drive for Linux Mint or Pop!_OS? Neither of the previous tools will create that media. There is an excellent open-source tool that allows you to make the media you need regardless of the host operating system you are using. It’s Balena Etcher.

According to the project’s Github repository, “Etcher is a powerful OS image flasher built with web technologies to ensure flashing an SDCard or USB drive is a pleasant and safe experience. It protects you from accidentally writing to your hard-drives, ensures every byte of data was written correctly, and much more. It can also directly flash Raspberry Pi devices that support USB device boot mode

Etcher is also available for installation of MacOS 10.10 and later and Microsoft Windows too. If you are on a Debian or Ubuntu based system you can install Etcher easily with the following command sequence. Download the latest release for Debian/Ubuntu.

  sudo add-apt-repository universe
  cd Downloads
  sudo apt install ./balena-etcher_*_amd64.deb

Fedora users can install Etcher using ‘dnf’,

   sudo dnf upgrade --refresh
   wget https://github.com/balena-io/etcher/releases/download/v1.18.12/balena-etcher-1.18.12.x86_64.rpm
   sudo dnf install balena-etcher-1.18.12.x86_64.rpm

If you are a Windows user, you can install Etcher using Chocolatey.

choco install etcher

MacOS users can install it by downloading the disk image.

Etcher has excellent documentation and an Apache 2.0 license.

Reviving Vintage Laptops: A Tale of Linux Mint and Broadcom Woes

A week ago, I met Gary at the local library; who was having trouble with his aging Dell laptop that he had purchased from a refurbisher. Troubleshooting revealed that the laptop was fine but needed an operating system. Gary chose to let me install Linux Mint Cinnamon on his computer.

A few days ago Gary emailed me to ask if I could help him with another laptop he’d purchased from a refurbisher. Similar models are currently selling for $45 online. I started the laptop with a USB with Linux Mint 21.2 Cinnamon edition and used ‘inxi‘ from the command line to determine what the processor, RAM, and wireless card were. This one Dell Latitude D630, which is vintage 2007, had an Intel Core 2 Duo T7500 processor with 4 gigabytes of RAM and a Broadcom 4311 wireless card.

I quickly decided that Linux Mint XFCE was a better OS choice than Cinnamon due to the processor and RAM. Fortunately for us, we were in the public library, and I had no trouble downloading Linux Mint 21.2 XFCE. I wrote the image to the USB drive and began the installation process on D630. The computer started up well and loaded Mint XFCE very well. I chose to install it, and after twenty minutes, we had a laptop with Mint XFCE adequately installed.

However, this D630 had Broadcom wireless, so the wireless card wasn’t recognized out of the fresh install. I have encountered this issue before with Dell laptops and knew immediately what to do. An internet search led me to Ubuntu’s excellent documentation of how to install Broadcom wireless drivers. I followed the command sequence below to update the drivers easily and restarted the Latitude D630.

sudo apt update
sudo apt install firmware-b43-installer
sudo apt install linux-firmware
sudo reboot

Once the computer was restarted, the tiny wireless indicator light began to glow as it should. I knew we were in business and could finish the update process and add additional software to this vintage Dell laptop. Gary had a big grin and once again thanked me for rescuing another old laptop from the landfill.

Customize an Intel NUC 11

In the previous year, I acquired a Hewlett-Packard DevOne to replace an Intel NUC 10, which had been serving as my primary workstation. I set up the DevOne with a docking solution detailed in an article I wrote last year, aiming to replace both the NUC and an older Darter Pro I had been using. However, I gradually realized that the DevOne wasn’t quite suitable for me due to its smaller fourteen-inch screen. Given my aging eyes, I needed to adjust accessibility settings, which work better with larger displays.

I must acknowledge that the DevOne is an impressive laptop—crafted with quality and firm performance. Nevertheless, the idea of docking a computer that I never use in a laptop mode started to seem less logical. After careful consideration, I recently decided to transition back to a dedicated desktop setup. Despite being four years old, I plan to retain the Darter Pro, which continues to serve me well during my travels and while assisting clients at their residences.

A lot of research for a bit of PC

Embarking on constructing your computer brings forth a distinct feeling of liberation. Instead of accepting pre-determined choices from a computer manufacturer, you can handpick each component that constitutes your system. Engaging in a do-it-yourself PC project entails an element of risk and adventure and lends a greater sense of accomplishment than a mere purchase.

I diligently conducted research to ensure the compatibility and viability of my selected NUC and its associated components. As part of this process, I switched from Pop!_OS 22.04 to Linux Mint 21.2, which also draws from the Ubuntu 22.04 base. I have relied on Cronopete as my chosen backup solution throughout my journey. Anticipating a smooth installation of Mint, I’m confident that I can seamlessly restore my files, reassuring me of the feasibility of my chosen path.

Assembling the NUC

When the package arrived, I was eager to assemble my new computer. I took the NUC out of its box and looked at the directions. The NUC has four screws in the base, which I loosened until I could easily remove the bottom plate. Once the case was opened, it was easy to see where the RAM chips belonged. I gingerly removed them from their packaging and, one by one, inserting them into their places.

Installing the SSD drive was a bit more complicated. I had to remove a tiny mounting screw before inserting the NVMe drive. A good screwdriver with a magnetic tip is an excellent aid when securing the NVME drive.

It was finally time to see the fruits of my labor. I connected the NUC to a monitor with an HDMI cable, attached the keyboard and mouse to the USB ports, and turned on the device. As the directions instructed, I pressed the F10 key at startup to enter the BIOS and selected the USB drive on which I had previously installed Linux Mint 21.2.

Booting Linux on a NUC

After connecting the NUC to my Logitech wireless keyboard and mouse and a Sceptre 27-inch monitor, I was ready to begin the installation. My first boot was unsuccessful, so I turned off the ‘Secure boot’ option, and on the second boot, Linux Mint came up! A quick check revealed that the wireless was fine, and the keyboard and mouse were both working. The installation took only about 10 minutes. I added my favorite applications, including the Chrome browser, and began to have some fun.

The NUC is certified on several Linux distributions, including Ubuntu, OpenSuse, and Clear Linux.

Once the operating system and updates were installed, boot time was much quicker than the NUC 10 I replaced a year ago. I used ‘Neofetch’ for a brief overview of the system.

Give it a try

I use my system primarily for writing, coding, video conferencing, virtualizing other operating systems, and reading. If you are considering building your compact Linux system, this is an excellent option.

New Paths for the Turtle

Turtle graphics, a popular approach to introducing young learners to programming, traces its roots back to the original Logo programming language. Logo, an educational programming language designed by Seymour Papert and others in 1967, played a significant role in the development of this technique.

My personal journey with Logo began during my time as a graduate student in education. As a young adult, I struggled with mathematics, finding abstract concepts elusive and distant, while others seemed to grasp them effortlessly. Mathematics became an enigma, something I couldn’t connect with. However, everything changed when I entered graduate school and was given the task of teaching geometry to a fifth-grade student using a special curriculum that leveraged Logo and its Turtle graphics feature.”

A friend suggested several years ago that I learn Python. I had dabbled with computer programming but never stuck with it. He invited me to sit in on a staff development session on using Python in educational settings. Fortunately for me, he introduced them to the Python ‘turtle module.’ There was a connection immediately to my earlier experiences with Apple LOGO, and I began to experiment. I was comfortable on the command line but new to the Python REPL. Nonetheless, I opened a new session and began by importing the ‘turtle module.’

don@pop-os:~$ python3
Python 3.10.12 (main, Jun 11 2023, 05:26:28) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

I imported the turtle module and followed my friend’s example. He was on a MacOS computer while I was using a Linux laptop. The results were nearly identical, though.

I enjoyed moving the turtle around the screen and drawing some simple shapes. The true potential of Turtle lies not merely in its capacity to execute commands but in its ability to foster procedural thinking and encourage students to reflect on their thought processes. With the aid of Turtle graphics, programming students can receive instant visual feedback from their code and simultaneously explore mathematical concepts, such as estimation and variability.

Reading books like “Teach Your Kids to Code” by Bryson Payne and “Python for Kids” by Jason Briggs, I learned more about the ‘Turtle’ and Python in general. My love of learning and teaching invited me to think of how I could share this with others. In the past half dozen years, I have taught homeschool classes and conducted workshops in public libraries.

I recently completed a three-day session in a nearby public library. Each of the participating youngsters received a Raspberry Pi 400, which they learned to set up and connect to library-supplied displays and the local area network. The main focus of our classes was getting them started programming with Python. We used the Mu editor included with the Raspberry Pi operating system. In a bit less than three days, the students learned how to program the turtle using simple commands at first, then progressed to ‘for’ loops and the ‘random’ module. Each of the participants was able to take their library-supplied Raspberry Pi 400 home with them.

There is nothing more exciting than seeing students excited about learning. I encourage you to share your skills with young learners wherever and whenever you can.

My open source story

In 1995, an email from my brother introduced me to Linux. Although I had heard of a high school student using Linux to build a web server, my knowledge was limited. Intrigued by my brother’s recommendation, I purchased a copy of Red Hat 5.0 from a nearby computer store. However, my initial attempt to explore it on an older computer resulted in a command prompt without success in running Xserver, leaving me unimpressed. A year later, I stumbled upon Red Hat 6.0 during another visit to the store. Taking it to work, I successfully installed Gnome on a Hewlett-Packard Vectra 75 with a Cyrix processor upgrade. This experience sparked my interest further.

The Red Hat 6.0 distribution came bundled with fascinating software like the Mozilla browser and OpenOffice 1.0, which I hadn’t encountered before. Excited about this discovery, I shared it with my IT team, and together we experimented with another machine. While we could browse Yahoo Mail using the browser, our workplace’s official email system, Lotus Notes, remained inaccessible. It was around early 2001 when I expressed my dissatisfaction with content filters to a vendor, and he suggested I build my own using Linux. This suggestion was an epiphany for me.

With minimal knowledge of Linux and no prior experience building a content filter, I embarked on a rapid learning journey. Armed with a Dell Optiplex GX1 equipped with a Pentium II-300 processor, I upgraded the hard disk and purchased Suse Linux 7. Through my exploration, I came across Squid and Squidguard and discovered Mandrake Linux, which appealed to me for various reasons. I also learned about the Red Hat Package Manager. Leveraging these newfound tools, I successfully built the first non-proprietary content filter in the history of Western New York’s public schools. Initially using Mandrake and later Fedora Core 1 on the older Dell machine, I employed Squid and Dansguardian to meet the requirements of CIPA compliance with E-rate. Although I faced some resistance from other technicians, I gradually demonstrated the legality and practicality of this solution over time.

This was just the beginning of my Linux journey. While developing the content filter, I delved into Samba and created our first network-attached storage device, providing our teachers with a reliable file backup solution. Subsequently, we built a Samba server running Fedora Core 1 and 2. I found stories of other schools utilizing Linux and learned about the K12 Linux Terminal Server Project. I taught myself Linux and Linux system administration through online forums, Google searches, and several books. I became a passionate advocate for open source, often promoting it at regional technology coordinator gatherings.

Using idle computers tucked away in closets across our school, I assembled a working demonstration of the K12 Linux Terminal Server. With an old Pentium II-300 boasting a mere 192 megabytes of RAM, I acquired special boot ROMs and repurposed additional older computers as thin clients for the server. One of our principals was so impressed with the results that he suggested implementing this solution in one of our computer labs. The success of the trial led to equipping two computer labs and numerous computers in classrooms and libraries with the K12LTSP solution. As the project expanded, we needed a more robust server and acquired a Dell PowerEdge with an advanced RAID controller. However, this setup proved incompatible with K12LTSP packages on Fedora Core 4. That’s when I discovered K12LTSP on CentOS. We adopted the CentOS 4 LTSP server as our DHCP server, seamlessly integrating it with Microsoft’s Active Directory. It served us well for over three years until we eventually virtualized our servers using VMWare ESX.

My foray into learning Linux empowered me to explore and create in ways I never imagined possible. Initially, open source presented challenges, with some components requiring unfamiliar configurations. However, I overcame these obstacles by relying on search engines and reading forums on the internet on Red Hat, Fedora, and other Linux user groups. Subsequently, I secured grants funded by our New York State Legislature, allowing me to attend Red Hat System Administration training in March 2003. A year later, another grant facilitated my participation in the Linux Boot Camp hosted by Training Camp and taught by Ross Brunson. Brunson’s teaching method involved building a system “from the ground up” with Red Hat 7.0, starting with the command line and gradually transitioning to a graphical user interface.

Equipped with experience and training, I became a resource for other regional school districts. Recognizing the tremendous potential of teaching students Linux, I seized every opportunity to do so. Unlike other operating systems, Linux allowed students to learn the fundamentals and progress to building their files and web servers. I utilized tools like VirtualBox to virtualize other Linux systems, such as Ubuntu and Debian, providing students with additional learning opportunities. Beyond developing a deep understanding of the operating system, my students and I familiarized ourselves with various open-source projects such as Audacity, OpenOffice.org, Apache, WordPress, Drupal, and Moodle, to name just a few.

The open-source ethos resonated with my desire to serve individuals and small businesses, which continues to this day as I work as a consultant for my own information technology business.

The foundational knowledge that propelled me toward advanced studies continues to animate my life and career. I teach young people and adults about Linux using platforms like the Raspberry Pi computer at our local library and other venues. Linux and open-source software have also spurred my exploration of social entrepreneurship, heavily influenced by what I have learned and witnessed within the open-source community. Later this month, I will be able to teach middle school students how to use Raspberry Pi 400 computers and Python at a local library.

This article is adapted from https://opensource.com/life/15/6/my-linux-story-don-watkins

Why Flatpaks on Linux Make Sense for Users

Introduction

Linux is celebrated for its flexibility and customization options. However, one aspect that has historically presented challenges for users is software installation and management. Thankfully, the advent of Flatpak has revolutionized the Linux ecosystem, offering a solution that simplifies software deployment and enhances user experience.

Streamlined Software Distribution

Flatpak, a universal package management system, allows users to install and update software from a central repository effortlessly—no need to look for the latest package or manually resolve complex dependencies. With Flatpaks, you no longer need to worry about conflicting library versions or package compatibility issues, as applications are bundled with all their necessary dependencies, creating a self-contained environment. This streamlined software distribution ensures a seamless experience, freeing users from the burdensome tasks of dependency hunting and manual installation.

Enhanced Security

Computer users ‘ security is a paramount concern, and Flatpaks significantly boosts this area. By encapsulating applications and their dependencies within sandboxes, Flatpak offers a layer of isolation that helps prevent software vulnerabilities from compromising the entire system. Each Flatpak runs in its container, limiting its access to system resources and ensuring any potential security breaches remain within the sandbox. Moreover, with frequent updates and security patches available through the central repository, users can easily stay protected against emerging threats.

Application Portability

One of the standout advantages of Flatpak is its ability to run applications consistently across different Linux distributions. By packaging applications with their necessary libraries, Flatpaks eliminate compatibility issues and allow users to enjoy their favorite software regardless of the underlying distribution. This application portability level dramatically simplifies switching between different Linux flavors or even sharing applications with friends and colleagues. With Flatpak, you can say goodbye to the frustrating search for software that works on your specific distribution.

Isolated Environments for Testing

Flatpak provides an excellent environment for testing new software without the risk of destabilizing your system. Creating isolated application sandboxes allows you to freely experiment with beta versions, bleeding-edge releases, or even unfamiliar software without worrying about potential conflicts or unintended consequences. This remote testing environment safeguards your system from potential harm and allows you to explore and discover new software confidently.

Community-driven Collaboration

Flatpak is an open-source project that benefits from a thriving community of developers and enthusiasts. This collaborative ecosystem ensures a wide variety of software is available in Flatpak format, with developers actively contributing to the central repository. Moreover, Flatpak empowers users to provide feedback, report bugs, and even contribute to the packaging efforts, fostering a sense of ownership and community participation. By embracing Flatpak, users become part of a more significant movement that aims to enhance the Linux experience for everyone.

Conclusion

In conclusion, adopting Flatpaks on Linux offers users various compelling advantages. From streamlined software distribution to enhanced security and application portability, Flatpak simplifies the once-complex landscape of software management on Linux. With isolated testing environments and a vibrant community-driven ecosystem, Flatpak paves the way for a more user-friendly and inclusive Linux experience. 

This article was written with an assist from ChatGPT.

From Windows to Linux: My Experience Helping a Friend Switch to Linux Mint

Yesterday I helped a friend restore two laptops to good working order using Linux Mint 21.1. My daily driver is Pop!_OS but my friend is new to Linux and I thought Linux Mint with a Cinnamon desktop would be a good place for him to start his Linux journey.  I saved his files from the first laptop on a USB drive and then began the install of Mint from another USB drive that I had prepared for that purpose. The candidate was a three year old Hewlett-Packard Laptop with a lightweight AMD processor and 4 GB or RAM. The computer had really gotten slow and was showing signs of a malware infestation when I suggested to my friend that he let me help him give Linux Mint a try.

The install of Mint went very well and we were done in about fifteen minutes which included adding updates and restoring his word processing and image files from the Windows 10 operating system that had existed on this laptop just a few minutes before. My friend was so excited by the results and the new life in his laptop that he invited me to try Mint on an extra Acer Aspire laptop that he had in a cupboard in his home. The Acer was a great candidate. Eight gigabytes of RAM, i5 processor and 250 GB SSD drive. My friend is quite happy with his two laptops now that they are running Linux Mint. I am always delighted when I can share the gift of Linux and open source software with anyone.

Managing your money on Linux

GnuCash is a popular open-source personal finance or small business accounting for Linux users. It is a full-featured double-entry accounting system that supports multiple accounts, investments, and currency conversions. The app also provides a variety of helpful financial tools, including budgeting, reporting, invoicing and more. GnuCash is a great choice for users who are looking for a comprehensive and powerful financial management solution. GnuCash is my own personal favorite that I have been using everyday for over six years. GnuCash can be installed from the command line or as a Flatpak depending on your distribution and/or personal choice. GnuCash is licensed with Gnu Public License. GnuCash is also available for MacOS and Windows users too.

Homebank is a free, open-source personal finance app for Linux, Windows and MacOS users. It easily imports files from Quicken, Microsoft Money and other software. It also imports from popular bank formats OFX/QFX, QIF and CSV. The source code for Homebank is freely available and licensed with GPL v 2.0. The project provides information about how to download and install on your distribution or operating system.

KMyMoney is a cross-platform double-entry bookkeeping system for personal finance management built on KDE. It’s similar in operation to popular proprietary personal finance applications. KMyMoney also supports multiple accounts and currencies, making it a great choice for users who need to manage their finances in multiple countries. It’s latest stable release was June 2021. It is licensed with Gnu Public License. The project provides download images for Linux, Windows and MacOS.

Skrooge is open source and available for download and install on Linux and BSD. It’s also available on Windows and MacOS. You can import accounts from many sources including AFB120, QIF, CSV, MT940, OFX, QFX. According to their website Skrooge is able to import directly transactions from all your banks web sites in one click. Skrooge provides excellent documentation too.