I have installed OMNeT++ 5.6.2 and added the INET 4.2.1 framework.
I followed the setup instructions as per the doc given and compiled and did make.
On running ./aloha I seem to encounter parameter unassigned error as follows :
Setting up Cmdenv...
Loading NED files from .: 4
Preparing for running configuration General, run #0...
Assigned runID=General-0-20201227-14:11:08-9189
Setting up network "Aloha"...
<!> Error: The simulation wanted to ask a question, set cmdenv-interactive=true to allow it: "Enter parameter 'Aloha.host[0].iaTime' (unassigned):" -- in module (aloha::Host) Aloha.host[0] (id=3), during network setup
End.
Even on running a different example from INET, from examples, adhoc, seem to get a similar error as follows :
Preparing for running configuration General, run #0...
Assigned runID=General-0-20201223-00:37:38-95889
Setting up network "Net80211"...
<!> Error: The simulation wanted to ask a question, set cmdenv-interactive=true to allow it: "Enter parameter 'Net80211.numHosts' (unassigned):" -- in module (omnetpp::cModule) Net80211 (id=1), during network setup
End.
Simulation terminated with exit code: 1
I did set cmdenv-intercative=true in the config file and yet the error does not go away.
Please do let me know if you need any additional information. Any help, direction or pointer to some resources would be greatly appreciated and will be really really helpful.
You need to set "cmdenv-intercative=true" for the [General] section.
I compiled SFML library and my app on Raspbian with this tutorial https://github.com/oomek/sfml-pi. After this I moved shared objects and app to buildroot system for Raspberry Pi 4. I chosed DISPMANX version, my goal was to run app without X server.
When I try to run app, I have error failed to add service - already in use?. I know that there was many similar topics, I tried this solutions:
Comment dtoverlay=vc4-kms-v3d in config.txt -> this line didn't existed in my config.
Change gpu_mem to 128 -> any improvement
My config.txt:
# Please note that this is only a sample, we recommend you to change it to fit
# your needs.
# You should override this file using a post-build script.
# See http://buildroot.org/manual.html#rootfs-custom
# and http://elinux.org/RPiconfig for a description of config.txt syntax
# We always use the same names, the real used variant is selected by
# BR2_PACKAGE_RPI_FIRMWARE_{DEFAULT,X,CD} choice
start_file=start.elf
fixup_file=fixup.dat
kernel=zImage
# To use an external initramfs file
#initramfs rootfs.cpio.gz
# Disable overscan assuming the display supports displaying the full resolution
# If the text shown on the screen disappears off the edge, comment this out
disable_overscan=1
# How much memory in MB to assign to the GPU on Pi models having
# 256, 512 or 1024 MB total memory
gpu_mem_256=128
gpu_mem_512=128
gpu_mem_1024=128
gpu_mem_1024=192
gpu_mem=128
# fixes rpi (3B, 3B+, 3A+, 4B and Zero W) ttyAMA0 serial console
dtoverlay=miniuart-bt
On buildroot I set opengl from gst1-plugins-base with dispmanx, gles2, egl and wayland. I didn't set mesa-3d.
Any idea how can I make my app working? Should I add something to my config.txt?
I have a printer problem when I want to print a document, the printer queue says "backend failed" and then pause.
My computer is mac os x, version is sierra 10.12.6, and printer is Canon IR ADV4235 using smb protocol to access.
I have tried the following ways:
download the latest driver from Canon website, and reinstall the driver
remove the old printer
add new printer
but still the same problem.
So, I want to find the specific error, and I searched /var/log with keyword "backend" but no related result.
Could anyone provide some help?
Thanks in advance.
UPDATE:
Using the command cupsctl --debug-logging,I got more messages. The following error messages seem to be helpful.
D [31/Jul/2017:13:47:44 +0800] [Job 25] PID 55276 (/usr/libexec/cups/backend/smb) crashed on signal 4.
...
D [31/Jul/2017:13:47:46 +0800] cupsdSetBusyState: newbusy="Printing jobs and dirty files", busy="Printing jobs and dirty files"
D [31/Jul/2017:13:47:46 +0800] [Job 25] PID 55275 (/Library/Printers/Canon/CUPS_Printer/Bins/capdftopdl) stopped with status 1.
I [31/Jul/2017:13:47:46 +0800] [Job 25] Backend returned status -4 (crashed)
D [31/Jul/2017:13:47:46 +0800] Discarding unused job-state-changed event...
I [31/Jul/2017:13:47:46 +0800] [Job 25] Printer stopped due to backend errors; please consult the error_log file for details.
But, I tried to run /usr/libexec/cups/backend/smb, it was ok. I don't know if other parameters will cause it crashed.
Could anybody give me a hint?
The log file you want is /var/log/cups/error_log, but by default it doesn't contain much info. You can increase the logging a great deal by turning on debug logging with cupsctl --debug-logging (and turn it off with cupsctl --no-debug-logging). In macOS 10.12 this takes effect immediately, but in some older versions you needed to restart the cups daemon with sudo launchctl stop org.cups.cupsd.
Sorry about the vagueness of the question title, but I've been having problems compiling Firefox OS and am unsure where to turn (I know there's Bugzilla but I'm not sure if what I'm experiencing is a bug or not)
Basically, I've been trying to compile the latest Firefox OS from source using the official instructions. I'm trying to build a system that supports the languages en-GB, en-US and tr (with en-GB as the default). My .userconfig is as follows:
export MAKE=
export CC=gcc-4.6
export CXX=g++-4.6
VARIANT=user
# GAIA l10n
export GAIA_DEFAULT_LOCALE="en-GB"
export LOCALE_BASEDIR="$PWD/locales"
export LOCALES_FILE="$PWD/locales/languages_some.json"
export GAIA_KEYBOARD_LAYOUTS="en,tr"
# Gecko l10n
export L10NBASEDIR=$PWD/gecko-locales
export MOZ_CHROME_MULTILOCALE="en-GB tr"
export PATH="$PATH:$PWD/compare-locales/scripts"
export PYTHONPATH="$PWD/compare-locales/lib"
The contents of languages_some.json is as follows:
{
"en-GB" : "English (GB)",
"en-US" : "English (US)",
"tr" : "Türkçe"
}
compare_locales contains an unmodified clone of this repo, and gecko-locales contains clones of en-GB and tr locales from the official repository (there is no 'en' or 'en-US' repository).
Now, I'm not 100% sure where the error is. I have tried searching Google for any suspect lines, but nothing has come up.
I have posted full output as a GitHub Gist. Suspect lines as far as I can tell (this is my first time compiling either Firefox or a mobile phone OS) are:
2015-03-16 16:43:12: stackwalker.cc:125: INFO: Couldn't load symbols for: |
2015-03-16 16:43:12: basic_code_modules.cc:88: INFO: No module at 0x2ab95ac94aa0
(then followed by a lot of 'No module at ...' errors)
also
System JS : ERROR file:///opt/src/B2G/gaia/b2g_sdk/34.0a1-2014-08-12-04-02-01/b2g/components/nsHandlerService.js:120 - NS_ERROR_FAILURE: Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIProperties.get]
This error is repeated a fair few times throughout the code, but I can't tell if it's harmless or if it's stopping the build.
There's also a bunch of lines about missing translations, but I imagine they're just harmless. I have tried to cut them down as much as possible (by adding the missing translations) but the problem persists.
Oh yes, and in case someone asks, I have been running with my phone plugged in, and it is visible on adb devices. I have also tried removing the out and backup-inari directories.
System specs, PC:
Debian Sid, mostly up-to-date, but running with an old version of make (build refuses to run on any version newer than 3.8)
GCC 4.6 and 4.9. export CC=gcc-4.6 set in .userconfig
G++ 4.6 and 4.9. export CXX=g++-4.6 set in .userconfig
Phone:
Original ZTE Open. This originally came with FFOS 1.0, but I have since upgraded to 1.1 by flashing the official ROM.
I'm compiling a custom kernel under Ubuntu and I'm running into the problem that my kernel doesn't seem to know where to look for firmware. Under Ubuntu 8.04, firmware is tied to kernel version the same way driver modules are. For example, kernel 2.6.24-24-generic stores its kernel modules in:
/lib/modules/2.6.24-24-generic
and its firmware in:
/lib/firmware/2.6.24-24-generic
When I compile the 2.6.24-24-generic Ubuntu kernel according the "Alternate Build Method: The Old-Fashioned Debian Way" I get the appropriate modules directory and all my devices work except those requiring firmware such as my Intel wireless card (ipw2200 module).
The kernel log shows for example that when ipw2200 tries to load the firmware the kernel subsystem controlling the loading of firmware is unable to locate it:
ipw2200: Detected Intel PRO/Wireless 2200BG Network Connection
ipw2200: ipw2200-bss.fw request_firmware failed: Reason -2
errno-base.h defines this as:
#define ENOENT 2 /* No such file or directory */
(The function returning ENOENT puts a minus in front of it.)
I tried creating a symlink in /lib/firmware where my kernel's name pointed to the 2.6.24-24-generic directory, however this resulted in the same error. This firmware is non-GPL, provided by Intel and packed by Ubuntu. I don't believe it has any actual tie to a particular kernel version. cmp shows that the versions in the various directories are identical.
So how does the kernel know where to look for firmware?
Update
I found this solution to the exact problem I'm having, however it no longer works as Ubuntu has eliminated /etc/hotplug.d and no longer stores its firmware in /usr/lib/hotplug/firmware.
Update2
Some more research turned up some more answers. Up until version 92 of udev, the program firmware_helper was the way firmware got loaded. Starting with udev 93 this program was replaced with a script named firmware.sh providing identical functionality as far as I can tell. Both of these hardcode the firmware path to /lib/firmware. Ubuntu still seems to be using the /lib/udev/firmware_helper binary.
The name of the firmware file is passed to firmware_helper in the environment variable $FIRMWARE which is concatenated to the path /lib/firmware and used to load the firmware.
The actual request to load the firmware is made by the driver (ipw2200 in my case) via the system call:
request_firmware(..., "ipw2200-bss.fw", ...);
Now somewhere in between the driver calling request_firmware and firmware_helper looking at the $FIRMWARE environment variable, the kernel package name is getting prepended to the firmware name.
So who's doing it?
From the kernel's perspective, see /usr/src/linux/Documentation/firmware_class/README:
kernel(driver): calls request_firmware(&fw_entry, $FIRMWARE, device)
userspace:
- /sys/class/firmware/xxx/{loading,data} appear.
- hotplug gets called with a firmware identifier in $FIRMWARE
and the usual hotplug environment.
- hotplug: echo 1 > /sys/class/firmware/xxx/loading
kernel: Discard any previous partial load.
userspace:
- hotplug: cat appropriate_firmware_image > \
/sys/class/firmware/xxx/data
kernel: grows a buffer in PAGE_SIZE increments to hold the image as it
comes in.
userspace:
- hotplug: echo 0 > /sys/class/firmware/xxx/loading
kernel: request_firmware() returns and the driver has the firmware
image in fw_entry->{data,size}. If something went wrong
request_firmware() returns non-zero and fw_entry is set to
NULL.
kernel(driver): Driver code calls release_firmware(fw_entry) releasing
the firmware image and any related resource.
The kernel doesn't actually load any firmware at all. It simply informs userspace, "I want a firmware by the name of xxx", and waits for userspace to pipe the firmware image back to the kernel.
Now, on Ubuntu 8.04,
$ grep firmware /etc/udev/rules.d/80-program.rules
# Load firmware on demand
SUBSYSTEM=="firmware", ACTION=="add", RUN+="firmware_helper"
so as you've discovered, udev is configured to run firmware_helper when the kernel asks for firmware.
$ apt-get source udev
Reading package lists... Done
Building dependency tree
Reading state information... Done
Need to get 312kB of source archives.
Get:1 http://us.archive.ubuntu.com hardy-security/main udev 117-8ubuntu0.2 (dsc) [716B]
Get:2 http://us.archive.ubuntu.com hardy-security/main udev 117-8ubuntu0.2 (tar) [245kB]
Get:3 http://us.archive.ubuntu.com hardy-security/main udev 117-8ubuntu0.2 (diff) [65.7kB]
Fetched 312kB in 1s (223kB/s)
gpg: Signature made Tue 14 Apr 2009 05:31:34 PM EDT using DSA key ID 17063E6D
gpg: Can't check signature: public key not found
dpkg-source: extracting udev in udev-117
dpkg-source: unpacking udev_117.orig.tar.gz
dpkg-source: applying ./udev_117-8ubuntu0.2.diff.gz
$ cd udev-117/
$ cat debian/patches/80-extras-firmware.patch
If you read the source, you'll find that Ubuntu wrote a firmware_helper which is hard-coded to first look for /lib/modules/$(uname -r)/$FIRMWARE, then /lib/modules/$FIRMWARE, and no other locations. Translating it to sh, it does approximately this:
echo -n 1 > /sys/$DEVPATH/loading
cat /lib/firmware/$(uname -r)/$FIRMWARE > /sys/$DEVPATH/data \
|| cat /lib/firmware/$FIRMWARE > /sys/$DEVPATH/data
if [ $? = 0 ]; then
echo -n 1 > /sys/$DEVPATH/loading
echo -n -1 > /sys/$DEVPATH/loading
fi
which is exactly the format the kernel expects.
To make a long story short: Ubuntu's udev package has customizations that always look in /lib/firmware/$(uname -r) first. This policy is being handled in userspace.
Wow this is very useful information and it led me to the solution for my problem when making a custom USB kernel module for a device requiring firmware.
Basically, every Ubuntu brings a new rehash of hal,sysfs,devfs,udev,and so on...and things just change. In fact I read they stopped using hal.
So let's reverse engineer this yet again so it's pertinent to the latest [Ubuntu] systems.
On Ubuntu Lucid (the latest at time of writing), /lib/udev/rules.d/50-firmware.rules is used. This file calls the binary /lib/udev/firmware, where magic happens.
Listing: /lib/udev/rules.d/50-firmware.rules
# firmware-class requests, copies files into the kernel
SUBSYSTEM=="firmware", ACTION=="add", RUN+="firmware --firmware=$env{FIRMWARE} --devpath=$env{DEVPATH}"
The magic should be something along these lines (source: Linux Device Drivers, 3rd Ed., Ch. 14: The Linux Device Model):
echo 1 to loading
copy firmware to data
on failure, echo -1 to loading and halt firmware loading process
echo 0 to loading (signal the kernel)
then, a specific kernel module receives the data and pushes it to the device
If you look at Lucid's source page for udev, in udev-151/extras/firmware/firmware.c, the source for that firmware /lib/udev/firmware binary, that's exactly what goes on.
Excerpt: Lucid source, udev-151/extras/firmware/firmware.c
util_strscpyl(datapath, sizeof(datapath), udev_get_sys_path(udev), devpath, "/data", NULL);
if (!copy_firmware(udev, fwpath, datapath, statbuf.st_size)) {
err(udev, "error sending firmware '%s' to device\n", firmware);
set_loading(udev, loadpath, "-1");
rc = 4;
goto exit;
};
set_loading(udev, loadpath, "0");
Additionally, many devices use an Intel HEX format (textish files containing checksum and other stuff) (wiki it i have no reputation and no ability to link). The kernel program ihex2fw (called from Makefile in kernel_source/lib/firmware on .HEX files) converts these HEX files to an arbitrary-designed binary format that the Linux kernel then picks up with request_ihex_firmware, because they thought reading text files in the kernel was silly (it would slow things down).
On current Linux systems, this is handled via udev and the firmware.agent.
Linux 3.5.7 Gentoo, I have the same issue.
SOLVED:
emerge ipw2200-firmware
Then go to /usr/src/linux
make menucofig
on device driver, remove all wirless drivers don't needed, set Intell 2200 as module and recompile.
make
make modules_install
cp arch/x86/boot/bzImage /boot/kernel-yourdefault