/usr/share/libffado2/python/ffado_diag_helpers.py is in ffado-tools 2.2.1-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 | #
# Copyright (C) 2008 Pieter Palmers
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, version 3 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
#
# Test for common FFADO problems
#
import sys
import os
import commands
import re
import logging
## logging setup
logging.basicConfig()
log = logging.getLogger('diag')
## helper routines
# kernel
def get_kernel_version():
return run_command('uname -r')
def get_kernel_rt_patched():
l = run_command('uname -v')
if l.find("PREEMPT RT") > -1:
return True
return False
def get_kernel_preempt():
l = run_command('uname -v')
if l.find(" PREEMPT ") > -1 and l.find(" RT ") == -1:
return True
return False
# modules
def check_for_module_loaded(modulename, procfile):
log.info("Checking if module '%s' is present in %s... " % (modulename, procfile))
f = open(procfile)
lines = f.readlines()
f.close()
for l in lines:
if l.find(modulename) > -1 or l.find(modulename.replace('-', '_')) > -1:
log.info(" found")
return True
log.info(" not found")
return False
def check_for_module_present(modulename):
log.info("Checking if module '%s' is present... " % modulename)
kver = get_kernel_version()
(exitstatus, outtext) = commands.getstatusoutput("find \"/lib/modules/%s/\" -name '%s.ko' | grep '%s'" % \
(kver, modulename, modulename) )
log.debug("find outputs: %s" % outtext)
if outtext == "":
log.info(" not found")
return False
else:
log.info(" found")
return True
def check_1394oldstack_active():
return check_for_module_loaded('ohci1394', '/proc/interrupts')
def check_1394oldstack_linked():
return os.access('/sys/module/ohci1394', os.F_OK) and \
os.access('/sys/module/raw1394', os.F_OK)
def check_1394oldstack_loaded():
retval = True
for modulename in ('ieee1394', 'ohci1394', 'raw1394'):
if not check_for_module_loaded(modulename, '/proc/modules'):
retval = False
return retval
def check_1394oldstack_present():
retval = True
for modulename in ('ieee1394', 'ohci1394', 'raw1394'):
if not check_for_module_present(modulename):
retval = False
return retval
def check_1394newstack_active():
return check_for_module_loaded('firewire_ohci', '/proc/interrupts')
def check_1394newstack_linked():
return os.access('/sys/module/firewire_ohci', os.F_OK)
def check_1394newstack_loaded():
retval = True
for modulename in ('firewire_core', 'firewire_ohci'):
if not check_for_module_loaded(modulename, '/proc/modules'):
retval = False
return retval
def check_1394newstack_present():
retval = True
for modulename in ('firewire-core', 'firewire-ohci'):
if not check_for_module_present(modulename):
retval = False
return retval
def check_1394oldstack_devnode_present():
return os.path.exists('/dev/raw1394')
def check_1394oldstack_devnode_permissions():
f = open('/dev/raw1394','w')
if f:
f.close()
return True
else:
return False
def run_command(cmd):
(exitstatus, outtext) = commands.getstatusoutput(cmd)
log.debug("%s outputs: %s" % (cmd, outtext))
return outtext
# package versions
def get_package_version(name):
cmd = "pkg-config --modversion %s" % name
return run_command(cmd)
def get_package_flags(name):
cmd = "pkg-config --cflags --libs %s" % name
return run_command(cmd)
def get_command_path(name):
cmd = "which %s 2> /dev/null" % name
return run_command(cmd)
def get_version_first_line(cmd):
ver = run_command(cmd).split("\n")
if len(ver) == 0:
ver = ["None"]
return ver[0]
def list_host_controllers():
lspci_cmd = get_command_path("lspci")
if lspci_cmd == "":
lspci_cmd = "/sbin/lspci"
cmd = lspci_cmd + " | grep 1394"
controllers = run_command(cmd).split("\n")
log.debug(lspci_cmd + " | grep 1394: %s" % controllers)
for c in controllers:
tmp = c.split()
if len(tmp) > 0:
tmp
cmd = lspci_cmd + " -vv -nn -s %s" % tmp[0]
print run_command(cmd)
def get_juju_permissions():
return run_command('ls -lh /dev/fw*')
def get_user_ids():
return run_command('id');
|