Recent Updates Toggle Comment Threads | Keyboard Shortcuts

  • lenz 16:24 on 2016-09-20 Permalink
    Tags: , , howto, , ,   

    Enabling scroll wheel emulation for the Logitech Trackman Marble on Fedora Linux 24 

    I’ve been struggling with this for quite some time now, but I finally figured out how to enable scroll wheel emulation for the Logitech Trackman Marble on Fedora Linux 24.

    Previously (when I was using Ubuntu Linux), I had a small shell script that defined the required xinput properties. However, this did not work on Fedora, as they use the new libinput framework.

    With the change to the libinput subsystem, you can now enable this behavior by creating a file /etc/X11/xorg.conf.d/10-libinput.conf with the following content:

    Section "InputClass"
     Identifier "Marble Mouse"
     MatchProduct "Logitech USB Trackball"
     Driver "libinput"
     Option "ScrollMethod" "button"
     Option "ScrollButton" "8"
     EndSection

    Magically, this function got enabled as soon as I saved the file, without even having to restart X! I’m impressed.

     
  • lenz 15:48 on 2016-09-12 Permalink
    Tags: collaboration, , , , ,   

    Summarizing last year’s achievements and highlights 

    A while ago, I concluded my first year in the openATTIC-Team at it-novum. We’ve gone through a lot of changes and I am quite proud of what we’ve achieved so far. In many ways, we’re starting this project and product from scratch, and I’m excited to be able to contribute to this effort with my experience from past jobs, and to help shaping the future direction. I feel grateful for having a very enthusiastic and supportive team. It’s also quite satisfying to observe how the seeds that we planted slowly come to fruition, as the project begins to gain traction with a growing user base and developer community.

    For more details on some of the key highlights, please see my blog post on the openATTIC blog.

     
  • lenz 01:41 on 2015-12-12 Permalink
    Tags: , , , python   

    signoff.py: A Mercurial hook to automatically add a “Signed-off-by:” tag line below your commit message 

    The openATTIC project is currently transitioning to adapting the patch contribution signoff process initially established by the Linux Kernel developers, in which every commit message is “signed” with a special Signed-off-by: tag line, that certifies that the patch contribution meets certain criteria with regards to ownership/copyright and licensing.

    The git distributed revision control system (DVCS) used by the Linux Kernel and many other projects actually provides an option --sign that can be passed to the git commit command, which will add the Signed-off-by: line at the end of the commit log message automatically.

    However, the openATTIC code base is managed using the Mercurial DVCS, which currently does not offer the same functionality out of the box. Fortunately, Mercurial is written in Python and is very extensible: it is possible to extend its functionality and modify the workflows via Hooks and Extensions.

    Much to my surprise, I was not able to find an existing plugin or extension that provides this functionality. So I took this opportunity to hone my Python skills and wrote one myself – signoff.py is a simple Mercurial hook, that will automatically add the signoff tag line below the commit message. Currently it is pretty rudimentary, I still need to read up on how to convert it into a proper Mercurial extension that extends the existing hg commit command, so the signoff process can be enabled by passing it as an option.

    To enable it, dowmload the file and save it as signoff.py into the .hg directory of your Mercurial repository and add the following to .hg/hgrc:

    [hooks]
    precommit = python:.hg/signoff.py:sign_commit_message

    If you have any suggestions or ideas on how to improve it, please let me know!

     
  • lenz 17:37 on 2015-12-10 Permalink
    Tags: administration, , , installation, , troubleshooting   

    Configuring a Brother MFC-7460DN Laser Printer/Scanner on Fedora 23 (64-bit) 

    I’ve always been a fan of Brother, as their devices usually come with decent support for the Linux OS (at least initially). I have an MFC-7460DN Laser Printer / Scanner in my home office, that worked fine with Ubuntu Linux for the past few years. It’s hooked up to my DSL router’s ethernet switch and acts like a network printer for all of our devices.

    Just to keep my mind flexible and to take a look at another Linux distribution for a change, I recently started using Fedora Workstation 23 on my Laptop (a company-issued Lenovo ThinkPad T440s). While the OS installation was painless and all main components like Video, Audio, Networking were detected and configured correctly out of the box, the post-installation of some tools and services required some more effort.

    This time, the printing part of the MFC-7460DN took me quite some time to figure out. While Brother provides RPM packages of the drivers, they are 32-bit only, and the instructions hadn’t been updated since Fedora 12. The first thing I had to do was to download two driver RPM packages. I initially started with the newer versions of the drivers, brgenml1cupswrapper-3.1.0 and brgenml1lpr-3.1.0, but somehow did not get them to work at all. I then tried the older packages, mfc7460dnlpr-2.1.0 and cupswrapperMFC7460DN-2.0.4. These installed flawlessly, and a new printer was added to the CUPS configuration automatically.

    However, it was configured as a local printer, so I first had to change the existing configuration to talk to the remote LPD port instead. While the printer configuration looked correct and no errors showed up, all print jobs simply disappeared into the bit bucket, without any visible error on the application side. Unfortunately the web-based CUPS administration tool was not much helpful, either – the button View Error Log simply returned a “Not found” error. There was no error log file in /var/log/cups, so I queried the status of the CUPS service via systemd next.

    The command systemctl status -l cups then gave me a first hint:

    sh: /opt/brother/Printers/BrGenML1//lpd/rawtobr3: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory

    Since this is a 32-bit binary, it might help to actually install a 32-bit version of the GNU C library! I simply forgot this step, even though it’s documented in the installation instructions. A simple dnf install glibc.i686 got me over this hurdle.

    Unfortunately the print jobs still did not reach the printer and disappeared in the void! Checking the CUPS error log again, I now saw this:

    /usr/local/Brother/Printer/MFC7460DN/lpd/filterMFC7460DN: line 131: 11660 Done                    eval cat $INPUT_TEMP
    11661 Broken pipe             | $PSCONV $PSCONV_OP
    11662 Segmentation fault      | $BRCONV $BRCONV_OP
    PID 11602 (/usr/lib/cups/filter/brlpdwrapperMFC7460DN) exited with no errors.
    PID 11603 (/usr/lib/cups/backend/lpd) exited with no errors.

    Hilarious. Oh well, maybe the 32-bit binary is simply too old and crashes in the new environment? Let’s take a look at the full systemd journal with journalctl! This gave me further clues:

    cupsd[10951]: /usr/local/Brother/Printer/MFC7460DN/lpd/filterMFC7460DN: line 131: 11660 Done                    eval cat $INPUT_TEMP
    cupsd[10951]: 11661 Broken pipe             | $PSCONV $PSCONV_OP
    cupsd[10951]: 11662 Segmentation fault      | $BRCONV $BRCONV_OP
    cupsd[10951]: PID 11602 (/usr/lib/cups/filter/brlpdwrapperMFC7460DN) exited with no errors.
    cupsd[10951]: PID 11603 (/usr/lib/cups/backend/lpd) exited with no errors.
    cupsd[10951]: time-at-completed=1449759139
    cupsd[10951]: Job completed.
    cupsd[10951]: Removing document files.
    dbus[1190]: [system] Successfully activated service 'org.fedoraproject.Setroubleshootd'
    setroubleshoot[11624]: SELinux is preventing brprintconflsr3 from using the execmem access on a process. For complete SELinux messages. run sealert -l 5d873063-1d87-4e82-b
    python3[11624]: SELinux is preventing brprintconflsr3 from using the execmem access on a process.
                                                    
                                    *****  Plugin catchall_boolean (89.3 confidence) suggests   ******************
                               
                                    If you want to allow cups to execmem
                                    Then you must tell SELinux about this by enabling the 'cups_execmem' boolean.
                                                    
                                    Do
                                    setsebool -P cups_execmem 1
                                                    
                                    *****  Plugin catchall (11.6 confidence) suggests   **************************
                                                    
                                    If you believe that brprintconflsr3 should be allowed execmem access on processes labeled cupsd_t by default.
                                    Then you should report this as a bug.
                                    You can generate a local policy module to allow this access.
                                    Do
                                    allow this access for now by executing:
                                    # grep brprintconflsr3 /var/log/audit/audit.log | audit2allow -M mypol
                                    # semodule -i mypol.pp
    

    OK, so SELinux seems to be getting in the way here. I did as suggested and ran the following commands:

    # setsebool -P cups_execmem 1
    # grep brprintconflsr3 /var/log/audit/audit.log | audit2allow -M brothermfc7460dn
    # semodule -i brothermfc7460dn.pp

    An lo and behold, the printer started printing! Let’s hope it still does when I reboot the system…

    Things I learned and that surprised me:

    • The error handling in CUPS completely failed here. There was not a single end-user accessible hint that something went wrong, the print jobs just disappeared in the void.
    • The move to systemd still has some ripple effects, e.g. the “Not found” error for the missing CUPS error log in the web UI.
    • Analyzing log files with journalctl is actually quite convenient. Instead of grepping and tailing multiple logs under /var/log/, these tasks can now be performed using a single tool.
    • SELinux is still a bitch, even though the hints provided by setroubleshootd were quite useful to resolve the issues at hand.
     
  • lenz 14:17 on 2015-11-13 Permalink
    Tags: conference, , openstack, summit   

    Conference report: OpenStack Summit 2015 Tokyo, Japan 

    I finally got around to write down my impressions and notes from the OpenStack Summit 2015 in Tokyo, Japan. You can find my conference report on the openATTIC blog. Enjoy!

     
  • lenz 14:11 on 2015-11-10 Permalink
    Tags: , , ,   

    Blogging on the openATTIC Community Blog 

    In case you were wondering why there were so few posts on this blog in the past weeks: since we’ve set up a dedicated blog for openATTIC, a lot of my recent blogging activity has taken place there. You can find all my posts using the Posts by Lenz Grimmer view.

     
  • lenz 14:02 on 2015-11-10 Permalink
    Tags: , , , , , video   

    Video of my German talk “Flexibles Storage Management unter Linux mit OpenATTIC” now on YouTube 

    Back in September, I attended the Kieler Linux Tage, to talk (in German) about how to manage storage on Linux using openATTIC.

    The presentation was recorded and the final result (in 4K) can now be viewed on YouTube. I hope you enjoy it!

     
  • lenz 11:11 on 2015-09-21 Permalink
    Tags: , , , ,   

    Slides of my German talk “Flexibles Storage Management unter Linux mit OpenATTIC” now on SlideShare 

    Last week, I attended the 13. Kieler Open Source und Linux Tage (KieLux) in Kiel, Germany, to give a presentation (in German) about “Flexibles Storage Management unter Linux mit OpenATTIC. I had an audience of ~25-30 people, a video recording of the session (in 4K!) will be published shortly. I had a great time at KieLux and learned a lot in the other sessions I attended. It was also nice meeting new people and touching base with long-time acquaintances again. Thanks to the KieLux organizers for arranging this event and for inviting me!

    My slide deck is now available from SlideShare. Enjoy!

     
  • lenz 12:57 on 2015-08-26 Permalink
    Tags: froscon, , , ,   

    Slides and Video of my talk “The Evolution of Storage on Linux” at FrOSCon 2015 

    Last weekend, I gave a presentation titled “The Evolution of Storage on Linux” at this year’s FrOSCon 10 conference (Happy Anniversary!). In case you have missed it, you can find the slides and video recording below. Thanks to the FrOSCon team for having me, it’s always a pleasure to be there!

    Unfortunately I had some technical issues in the beginning and was somewhat too ambitious with regards to the topics I wanted to cover, so I ran out of time. There is simply too much cool stuff happening in the storage space – but I hope that the audience still enjoyed it!

    Slide deck:

    Video:

     
  • lenz 13:35 on 2015-07-16 Permalink
    Tags: , licensing, ,   

    Creating a Contributor Agreement for Your Project 

    Back in the MySQL days, there was a need to have a contributor agreement that made it clear under which terms code contributions to the MySQL code base could be accepted. This was a requirement due to the dual-licensing model of MySQL, under which the software was available both under the GPL and a proprietary license.

    This agreement was further refined when MySQL was acquired by Sun Microsystems in 2008, which resulted in the “Sun Contributor Agreement” (SCA), which was used for all Open Source projects that were sponsored/governed by Sun Microsystems (e.g. OpenOffice.org, Java, etc.).

    The text of the agreement itself was licensed under a creative commons license (Creative Commons Attribution-Share Alike 3.0 Unported), and it was later used as the basis for contributor agreements of several other Open Source Projects, e.g. MariaDB or OwnCloud (even though both fail to give proper attribution to the original). In fact, the agreement still exists as the Oracle Contributor Agreement today, after Sun Microsystems was acquired by Oracle in 2010. If you would like to submit a patch to MySQL, you first need to get your name on the OCA Signatories List.

    While doing some research on creating such a contributor agreement for openATTIC, I was pointed to this very useful resource: http://contributoragreements.org/

    “Contributor agreements are agreements between an open source or open content project and contributors to the project that set out what the project can do with the respective contribution: code, translation, documentation, artwork, etc. The purpose of such agreements is to make the terms under which contributions are made explicit and thereby protect the project, the users of the project’s code or content, and often the contributors themselves. Contributor agreements provide confidence that the guardian of a project’s output has the necessary rights over all contributions to allow for distribution of the product under either any license or any license that is compliant with specific principles.”

    The nice part about this web site: it provides a guided Contributor License Agreement Chooser that allows you to compile a custom agreement based on the requirements (e.g. Copyright assignment, Patent clauses) that you define, similar to the Creative Commons License Chooser, where you can select the terms and conditions of your license to be guided to the appropriate choice.

    So in case your project needs a contributor agreement, please don’t re-invent the wheel and consider making use of this site instead! There are way too many custom agreements floating around already…

     
c
Compose new post
j
Next post/Next comment
k
Previous post/Previous comment
r
Reply
e
Edit
o
Show/Hide comments
t
Go to top
l
Go to login
h
Show/Hide help
shift + esc
Cancel