USB is a subsystem in the Linux kernel, and utilizes a message passing paradigm. These messages are known as URBs (USB Request blocks). These requests can be sent by calling the usb_submit_urb with the following parameters usb_submit_urb(struct urb*, int mem_flags). The urb* structure pointer contains the information necessary to complete the request.
One can also cancel a URB by utilizing the usb_unlink_urb() method. Similar to most older C style code, a URB must be allocated using usb_alloc_urb(), and freed using usb_free_urb(). You can find the structure above in the usb.h header file which resides under include/usb/ in the kernel source.
Discover the process of developing a device driver to be utilized on a Raspberry PI. The idea behind this is two take a USB controller SNES (Super Nintendo) controller, and write drivers for it to work with an emulator on a Raspberry PI. Throughout this process we plan to discover the process of developing a kernel device driver. We have utilized the following operating systems:
- Raspbian (Raspberry PI)
- Ubuntu 14.04 (Bootcamp on Macintosh Laptop)
- CentOS 7 Minimalistic (VMWare Fusion utilizing device hardware)
The concept above shows the USB controller utilizing the driver to “speak” with the USB core in the kernel. The driver will be implemented as a kernel module that can be loaded/unloaded on demand.
In our case, our iBuffalo USB Super Nintendo did not come with any USB documentation. I am sure there are many Linux users out there who would love to adapt their Windows/Mac compliant devices to their Linux needs. A solution to this problem might be to do some USB SNOOPING! Sounds like espionage… It’s actually quite simple. There are many applications out there for Windows and Mac to perform snooping on connected USB devices. Those devices have nice interfaces for monitoring USB activity. However this is a Linux course isn’t it? Why not use a Linux based application to snoop USB devices.
Most implementations of linux include software named Usbmon. This usb monitoring tools may or may not be active in your linux system. I know for me personally, it was not (Ubuntu 14). If you need to activate this tool, you can run:
More info coming soon on usbdump.
I mentioned the Shellshock vulnerability earlier this week, and since more and more users/organizations are proclaiming attacks on their systems. Shellshock is without a doubt one of the worst vulnerabilities in recent years, and it seems it’s gotten worse already. Apparently, a Botnet code named “Mayhem” is already causing havoc. Mayhem is delivered via a PHP script, and is contained within a malicious ELF (Executable and Linkable Format) binary file, like a common .EXE file. It should be noted that there are separate malicious binaries for both the 32-bit and 64-bit architectures. The best way to avoid the Shellshock vulnerability and “Mayhem” is to keep systems up to date, and avoid malicious web sites at all costs.
More information can be found here:
Here is a great post about writing device drivers in Linux:
Everyone is hopefully aware that computer security is a huge issue these days. Everyone should be vigilant in protecting their systems, personal information, and data. Shellshock is the latest large security vulnerability that is affecting machines running Unix or Linux (including Mac OSX, and Android) based operating systems. Shellshock is an exploit in which attackers can gain control of your system by exploiting the Bash shell. It basically allows the attacker to embed malicious code in an HTTP header utilizing Bash through Java, Python, and even PHP. Shellshock differs from Heartbleed in that it is much easier to execute. It is suggested that users ensure their systems are up to date with the latest patches, and avoid unsecured web sites. Windows users are not affected unless they are using Cygwin.
Originally posted on August 31st on my school site.
I had my first class last Monday. In class we were asked to install Linux and start to get familiar with the kernel configuration, building, and installation process. So far this week I have installed the lastest version of Ubuntu (14.04.1) on my Macbook. I also have a desktop running Centos 6, and a Raspberry PI running Raspian. I wanted to have a Linux OS on my laptop running natively for speed and mobility. I chose Ubuntu because it plays well with Apple laptops. I have preliminarily been thinking of project idea, and I keep thinking it might be neat to do something with the kernel of the Raspian OS on my Raspberry PI. That sums up my first post, more to come!
Swift is a new language created by Apple for iOS and OS X application development. Swift is built off of C and Objective-C, languages that have been a mainstay for Apple. Swift is backed by Cocoa and Cocoa Touch Frameworks. It has a familiar feel to developers that are used to the Objective-C syntax. Swift may appeal more to younger developers looking for language with similar constructs as Ruby and Python. It should be noted that Swift is still under development, and there will likely be features added in the future. With Swift, one can now use Generics (similar Java’s Generics, or C++ Templates).
There are many new exciting features to the Swift language and it can’t hurt to check them out. Swift claims to be more powerful and faster than Objective C. It is a little hard to believe that i could be since it is built over the C/Objective C language. It would be an interesting experiment to test out how they weight against each other. Swift is said to be designed for safety. With today’s applications safety is important. Safer languages are less error prone, and do not as easily allow for security vulnerabilities. If you’ve got some spare time, then i suggest you give Swift a chance.
More information can be found on Apple’s website:
These Neurosynaptic chips utilize synapses as opposed to tradition silicon transistors, and they now have more synapses than ever before. These chips now contain 4,096 cores, which is a vast improvement compared to a few years ago when they contained 1 core.
Read more here:
Chris and myself will be working on a project relating to the Raspberry Pi kernel.